필터 지우기
필터 지우기

Using Switch/Case to assign values

조회 수: 7 (최근 30일)
Poseidon
Poseidon 2023년 4월 20일
댓글: Cris LaPierre 2023년 4월 20일
Hi
I am trying to use switch/case like below but when I run it, says eq is unrecognised variable or function. This is for an app.
switch app.SelectEvaporatorTypeDropDown.Value
case 'Forced Circlation (pumped)'
eq(1)=1;
case 'Falling Film'
eq(1)=2;
case 'Agitated Film (scraped wall)'
eq(1)=3;
case 'Short Tube'
eq(1)=4;
case 'Long Tube'
eq(1)=5
end
  댓글 수: 3
DGM
DGM 2023년 4월 20일
I don't see any way that the given code would ever produce that specific error. While eq() is a builtin function, and it's probably a bad idea to be naming your variables after functions, it's not apparent to me how that would be causing this specific error either.
Of course, you didn't include the entire error message backtrace, so it's not clear that this chunk of code is even part of the problem.
Fangjun Jiang
Fangjun Jiang 2023년 4월 20일
Although not recommended, your code does not have error here.
  1. "eq" is a function. use some other variable name, e.g. Myeq
  2. Before this code, pre-allocate the variable and value, Myeq=1;
app.SelectEvaporatorTypeDropDown.Value='Forced Circlation (pumped)';
switch app.SelectEvaporatorTypeDropDown.Value
case 'Forced Circlation (pumped)'
eq(1)=1
case 'Falling Film'
eq(1)=2;
case 'Agitated Film (scraped wall)'
eq(1)=3;
case 'Short Tube'
eq(1)=4;
case 'Long Tube'
eq(1)=5
end
eq = 1

댓글을 달려면 로그인하십시오.

채택된 답변

Cris LaPierre
Cris LaPierre 2023년 4월 20일
편집: Cris LaPierre 2023년 4월 20일
I suspect the error is not occuring in the lines of code you have shared, but later on in another function when you try to use eq. Keep in mind variable scope. All your code in an app is inside functions. Once that function completes, its workspace is cleared.
If you want to share data between functions in your app, you must add the variable as a property of the app. See here: https://www.mathworks.com/help/matlab/creating_guis/share-data-across-callbacks-in-app-designer.html
You then access it by prepending with the property name with your app object name, like so: app.eq
  댓글 수: 4
Poseidon
Poseidon 2023년 4월 20일
편집: Poseidon 2023년 4월 20일
Thank you this helped.
There were actually other mistakes I did that was basically causing the problems (messed up the names of the cases and similar mistakes where app and code weren't matching which was causing cases to evaluate false)
Cris LaPierre
Cris LaPierre 2023년 4월 20일
Just an additional note that you can also preallocate your property this way:
properties (Access = private)
Myeq = zeros(1,4); % Description
end

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Migrate GUIDE Apps에 대해 자세히 알아보기

태그

제품


릴리스

R2020b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by