Storing information from a loop over 3 variables

The code below seems to store the results from each loop as opposed to providing the results from the current loop.
So, for example Table(1,1,2) has the results of Table (1,1,1) and Table (1,1,2).
x=xlsread('DeltaNAV.xlsx','Sheet1','O4:O200003');
SCR=prctile(x,0.5);
rho=0;
muinputs=[-0.025,-0.010,0.0181,0.025];
sigmainputs=[0.0125,0.0287,0.0501,0.0751];
Table=cell(4,4,9);
for i=1:4
for j=1:4
for ii=1:9
muy=-muinputs(i)*SCR;
sigmay=-sigmainputs(j)*SCR;
%muy=-0.1*SCR;
%sigmay=-0.1*SCR;
y(:,ii)=Testlooping(x,rho,muy,sigmay);
y2(:,ii)=x+y(:,ii);
y3(:,ii)=prctile(y2(:,ii),0.5);
Table{i,j,ii}=y3;
end
end
end

 Réponse acceptée

@RP - look closely at this code
for i=1:4
for j=1:4
for ii=1:9
muy=-muinputs(i)*SCR;
sigmay=-sigmainputs(j)*SCR;
y(:,ii)=Testlooping(x,rho,muy,sigmay);
y2(:,ii)=x+y(:,ii);
y3(:,ii)=prctile(y2(:,ii),0.5);
Table{i,j,ii}=y3;
end
end
end
when ii is 1, then the code is doing
y(:,1)=Testlooping(x,rho,muy,sigmay);
y2(:,1)=x+y(:,1);
y3(:,1)=prctile(y2(:,1),0.5);
Table{i,j,1}=y3;
On the subsequent iteration, when ii is 2, then
y(:,2)=Testlooping(x,rho,muy,sigmay);
y2(:,2)=x+y(:,2);
y3(:,2)=prctile(y2(:,2),0.5);
Table{i,j,2}=y3;
Note that the assignment to Table{i,j,2} is y3 which combines the results of the current iteration and that of the previous. I don't think that you need to maintain this data on each iteration and so the code could be simplified to
y = Testlooping(x,rho,muy,sigmay);
y2 = x + y;
y3 = prctile(y2,0.5);
Table{i,j,2} = y3;
Would the above work instead?

Plus de réponses (0)

Catégories

En savoir plus sur Loops and Conditional Statements dans Centre d'aide et File Exchange

Produits

Version

R2019b

Community Treasure Hunt

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

Start Hunting!

Translated by