While loop inside an if loop
8 次查看(过去 30 天)
显示 更早的评论
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
2016-10-23
What is 'UPDRS1997'
And where is it located? You have to give us all the info for help
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
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
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
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
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 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Data Type Identification 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!