'While' loop that pulls data from a matrix with n rows

1 vue (au cours des 30 derniers jours)
c_def
c_def le 6 Fév 2018
Commenté : c_def le 6 Fév 2018
I am trying to write a code to execute a 'while' loop from a matrix. The matrix it pulls the data from ideally has n lines (where n can vary depending on the .xls file uploaded and the number of rows it contains). Variables DRb and PRb are defined earlier in the code and are constants.
[min,el]=xlsread('file name.xls');
while f<=0.04
col=4;
atom=1;
ReverseMelt(row, atom)=f;atom=atom+1;
ReverseMelt(row, atom)=((min(6,col)/(DRb+f*(1-PRb))))^(-1); col=col+1;atom=atom+1;
*many more lines of calculations*
row=row+1;
f=f+0.005;
end
The data I am looking for this calculation starts at min(6,col) but I want the while loop, when it reaches f=0.04, to start again such that min(6,col) becomes min(7,col) and so on till the end of the matrix. I have tried a 'for' loop where I put before the while loop:
x=size(min)
y=x(1,1)
For z=6:y
while f<=0.04
col=4;
atom=1;
ReverseMelt(row, atom)=((min(y,col)/(DRb+f*(1-PRb))))^(-1);
end
end
I thought this would make my while loop run from row 6 in matrix min to y (the number of total rows), but didn't go. Any ideas?

Réponse acceptée

Roy Kadesh
Roy Kadesh le 6 Fév 2018
Your loop variable is z, while you use y inside your loop, so it repeats the same code y times (assuming you have hidden the code that re-initialized f for the second for-loop)
  3 commentaires
Roy Kadesh
Roy Kadesh le 6 Fév 2018
You need to reset f, otherwise the while loop will exit immediately after the z=6 is done. You can see this if you use the debugger to step through your code.
c_def
c_def le 6 Fév 2018
Excellent, this solved it. Thanks!

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Creating and Concatenating Matrices dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by