While loop inside an if loop

조회 수: 8 (최근 30일)
mcm
mcm 2016년 10월 23일
편집: Walter Roberson 2016년 10월 23일
I have UPDRS1997 which is an array (1x50). I want a while loop that will display Participant should consult neurologist if the value of the array is not 0
pick_year = input('Pick a year: either 1997 or 2013: ')
if pick_year == 1997
load('UPDRS1997')
while UPDRS1997 ~=0
fprint('Participant should consult neurologist'/n)
end
end
The while loop I created however does not run. Matlab stops by display pick_year.
How can I improve my code?
  댓글 수: 2
Robert
Robert 2016년 10월 23일
What is 'UPDRS1997'
And where is it located? You have to give us all the info for help
Walter Roberson
Walter Roberson 2016년 10월 23일
It is a .mat file in the current directory that contains the variable UPDRS1997 which is a 1 x 50 double.

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

답변 (2개)

Chaya N
Chaya N 2016년 10월 23일
편집: Chaya N 2016년 10월 23일
"Matlab stops by display pick_year."
When this line is displayed, you have to enter the year on your command window. Your program will only run once you specify the input!
Also, if you do not have any data associated with the year 2013, why is it specified as an input option?
  댓글 수: 3
Walter Roberson
Walter Roberson 2016년 10월 23일
while VARIABLE ~= 0
means the same thing to MATLAB as
while all(VARIABLE(:) ~= 0)
which is to say that it will only be true if every value in the given VARIABLE is non-zero. If you have even one 0 in there then the condition will be false at the beginning and the while will not be executed.
If the while were executed then because it the condition does not change and nothing in the body of the while changes any variable, the while would run infinitely.
Chaya N
Chaya N 2016년 10월 23일
For the issue with the while loop, refer to Walter Roberson's excellent solution below.
My question was, when you are prompted for an input, if you specified 2013 as the year, your program would still terminate because there are no statements specified to execute for that condition. If you have no data for that particular input, then it is unnecessary to prompt for the year because you could directly load the data for the year 1997 and run the program. This would also eliminate the first 'if' statement for pick_year.

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


Walter Roberson
Walter Roberson 2016년 10월 23일
편집: Walter Roberson 2016년 10월 23일
pick_year = input('Pick a year: either 1997 or 2013: ')
if pick_year == 1997
load('UPDRS1997')
if all(UPDRS1997 ~=0)
fprintf('Participant should consult neurologist, array is all non-zero\n')
elseif any(UPDRS1997 ~=0)
fprintf('Participant should consult neurologist, something in array is non-zero\n')
end
end
  댓글 수: 2
Chaya N
Chaya N 2016년 10월 23일
Perhaps the 'fprint' above should be 'fprintf' (?)
Walter Roberson
Walter Roberson 2016년 10월 23일
Ah yes, you are right.

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

카테고리

Help CenterFile Exchange에서 Data Type Identification에 대해 자세히 알아보기

태그

Community Treasure Hunt

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

Start Hunting!

Translated by