How do i store an array each time i run the for loop?
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
How would i store values for F in a seperate array each time i run the for loop and will they be placed in the workspace? I would therefore be looking for 181 different arrays with 101 columns in each.
Is there any way of showing which value of phi corresponds to its F array?
theta=-20*pi/180:pi/180:80*pi/180;
for phi=0:pi/180:pi
phi;
gamma=phi+BOC;
C2=((rmax^2)-(rmin^2))/((cos(gamma+thetamin)-cos(gamma+thetamax)));
C1=(rmax^2)+C2*cos(gamma+thetamax);
a=((C1+C2)^(1/2)+(C1-C2)^(1/2))/2;
b=C2/(2*a);
r=sqrt(C1-C2*cos(gamma+theta));
F=(r/b*a)*m*g*OC*(cos(theta)/sin(gamma+theta));
end
0 Kommentare
Akzeptierte Antwort
the cyclist
am 23 Nov. 2011
One way is to make F a cell array. Notice that in the loop, I am accessing F using curly brackets instead of parentheses. Each F{i} is an array.
Is there any reason to keep them as separate arrays? You could also just make F one array, which is 101x181.
[Apologies for any little syntax errors here. I could not actually run your code without knowing your constants.]
theta=-20*pi/180:pi/180:80*pi/180;
phi_vec = 0:pi/180:pi;
Nphi = numel(phi_vec);
F = cell(Nphi,1);
for np = 1:Nphi
phi = phi_vec(np);
gamma=phi+BOC;
C2=((rmax^2)-(rmin^2))/((cos(gamma+thetamin)-cos(gamma+thetamax)));
C1=(rmax^2)+C2*cos(gamma+thetamax);
a=((C1+C2)^(1/2)+(C1-C2)^(1/2))/2;
b=C2/(2*a);
r=sqrt(C1-C2*cos(gamma+theta));
F{np}=(r/b*a)*m*g*OC*(cos(theta)/sin(gamma+theta));
end
3 Kommentare
the cyclist
am 24 Nov. 2011
The reason you get all the command window output is probably that you neglected to include a semicolon at the end of a line, probably the line that calculates F, inside the loop.
This code will make F one large array, instead of a cell array of vectors:
phi_vec = 0:pi/180:pi;
Nphi = numel(phi_vec);
F = zeros(Nphi,101);
for np = 1:Nphi
phi = phi_vec(np);
gamma=phi+BOC;
C2=((rmax^2)-(rmin^2))/((cos(gamma+thetamin)-cos(gamma+thetamax)));
C1=(rmax^2)+C2*cos(gamma+thetamax);
a=((C1+C2)^(1/2)+(C1-C2)^(1/2))/2;
b=C2/(2*a);
r=sqrt(C1-C2*cos(gamma+theta));
F(np,:)=(r/b*a)*m*g*OC*(cos(theta)/sin(gamma+theta));
end
Notice that I changed both the initialization of F, and the calculation.
You can transpose F with the command like this:
F = F.';
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Matrices and Arrays finden Sie in Help Center und File Exchange
Produkte
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!