While loop inside an if loop

8 visualizaciones (últimos 30 días)
mcm
mcm el 23 de Oct. de 2016
Editada: Walter Roberson el 23 de Oct. de 2016
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 comentarios
Robert
Robert el 23 de Oct. de 2016
What is 'UPDRS1997'
And where is it located? You have to give us all the info for help
Walter Roberson
Walter Roberson el 23 de Oct. de 2016
It is a .mat file in the current directory that contains the variable UPDRS1997 which is a 1 x 50 double.

Iniciar sesión para comentar.

Respuestas (2)

Chaya N
Chaya N el 23 de Oct. de 2016
Editada: Chaya N el 23 de Oct. de 2016
"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 comentarios
Walter Roberson
Walter Roberson el 23 de Oct. de 2016
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 el 23 de Oct. de 2016
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.

Iniciar sesión para comentar.


Walter Roberson
Walter Roberson el 23 de Oct. de 2016
Editada: Walter Roberson el 23 de Oct. de 2016
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 comentarios
Chaya N
Chaya N el 23 de Oct. de 2016
Perhaps the 'fprint' above should be 'fprintf' (?)
Walter Roberson
Walter Roberson el 23 de Oct. de 2016
Ah yes, you are right.

Iniciar sesión para comentar.

Categorías

Más información sobre Data Type Identification en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by