How to save variables in workspace to be used after running the code multiple times?

5 次查看(过去 30 天)
A = input('Pick an angle 15, 30, 45, or 60 angle = ');
if A ~= [15 30 45 60]
error('Error. angle must be 15, 30, 45, or 60 degrees ');
end
b = 4;
c = 4;
a = sidea(b,c,A);
B = asind((b*sind(A))/a);
C = 180 - B - A;
H = C;
E = 180 - C - H;
e = 4;
f = a;
g = 4;
h = 4;
F = asind((f*sind(E))/e);
D = 180 - E - F;
d = sided(e, f, D);
i = d;
G = asind((g*sind(H))/h);
I = 180 - G - H;
%% Variables/Calculations
% Method of Joints
P = 1;
% Joint I
Fig = P / sind(I);
Fei = Fig * cosd(I);
% Joint G
Fge = (Fig*sind(I))/(sind(F));
Fgb = (Fge*cosd(F)+Fig*cosd(I));
% Joint B
Fba = (Fgb)/(cosd(A)+(sind(A)*cotd(C)));
Fbe = (Fba*sind(A))/sind(C);
% Joint E
Fea = Fei - (Fge*cosd(F))+(Fbe*cosd(D));
%% Solving for P
if A == 15
Fea = -Fea;
if Fba > Fge
T = ((8*(trig(A, C, F, I))));
elseif Fba < Fge
T = 6 * sind(F);
end
end
if A == 30
Fea = -Fea;
if Fba > Fge
Z = ((8*(trig(A, C, F, I))));
elseif Fba < Fge
Z = 6 * sind(F);
end
end
if A == 45
Fea = -Fea;
if Fba > Fbe
P = (8*(trig(A, C, F, I)));
elseif Fbe > Fba
P = ((6*(trig(A, C, F, I)*(sind(C)/sind(A)))));
end
end
if A == 60
R = ((6*(trig(A, C, F, I))));
end
%% User Defined Functions
function [a] = sidea(b, c, A)
[a] = sqrt(b^2 + c^2 - (2*b*c*cosd(A)));
end
function [d] = sided(e, f, D)
[d] = sqrt(e^2 + f^2 - (2*e*f*cosd(D)));
end
function [comp] = trig(A, C, F, I)
[comp] = (cosd(A)+sind(A)*cotd(C))/(cotd(F)+cotd(I));
end
I am trying to run this code four times for four different angles, [15, 30, 45, 60]. I want it to save variables across each run so at the end, i can use them to plot. My problem is, no matter what i do, the variables seem to be overided. I tried to saved the variable as it's own file using save command but I could not run the code because i was trying to load variables that were not yet saved. I tried to initialize these variables and save them as 0 so that i could run the code but then the variables would be overun. If anyone has any idea it would be a great help.

回答(1 个)

Walter Roberson
Walter Roberson 2020-4-18
编辑:Walter Roberson 2020-4-18
T = nan;
Z = nan;
P = nan;
R = nan;
for trynum = 1 : 4
A = input('Pick an angle 15, 30, 45, or 60 angle = ');
if A ~= [15 30 45 60]
error('Error. angle must be 15, 30, 45, or 60 degrees ');
end
b = 4;
c = 4;
a = sidea(b,c,A);
B = asind((b*sind(A))/a);
C = 180 - B - A;
H = C;
E = 180 - C - H;
e = 4;
f = a;
g = 4;
h = 4;
F = asind((f*sind(E))/e);
D = 180 - E - F;
d = sided(e, f, D);
i = d;
G = asind((g*sind(H))/h);
I = 180 - G - H;
%% Variables/Calculations
% Method of Joints
P = 1;
% Joint I
Fig = P / sind(I);
Fei = Fig * cosd(I);
% Joint G
Fge = (Fig*sind(I))/(sind(F));
Fgb = (Fge*cosd(F)+Fig*cosd(I));
% Joint B
Fba = (Fgb)/(cosd(A)+(sind(A)*cotd(C)));
Fbe = (Fba*sind(A))/sind(C);
% Joint E
Fea = Fei - (Fge*cosd(F))+(Fbe*cosd(D));
%% Solving for P
if A == 15
Fea = -Fea;
if Fba > Fge
T = ((8*(trig(A, C, F, I))));
elseif Fba < Fge
T = 6 * sind(F);
end
end
if A == 30
Fea = -Fea;
if Fba > Fge
Z = ((8*(trig(A, C, F, I))));
elseif Fba < Fge
Z = 6 * sind(F);
end
end
if A == 45
Fea = -Fea;
if Fba > Fbe
P = (8*(trig(A, C, F, I)));
elseif Fbe > Fba
P = ((6*(trig(A, C, F, I)*(sind(C)/sind(A)))));
end
end
if A == 60
R = ((6*(trig(A, C, F, I))));
end
end
if isnan(T)
error('You never selected 15')
end
if isnan(Z)
error('You never selected 30')
end
if isnan(P)
error('You never selected 45')
end
if isnan(R)
error('You never selected 60')
end
plot([15 30 45 60], [T, Z, P, R])
%% User Defined Functions
function [a] = sidea(b, c, A)
[a] = sqrt(b^2 + c^2 - (2*b*c*cosd(A)));
end
function [d] = sided(e, f, D)
[d] = sqrt(e^2 + f^2 - (2*e*f*cosd(D)));
end
function [comp] = trig(A, C, F, I)
[comp] = (cosd(A)+sind(A)*cotd(C))/(cotd(F)+cotd(I));
end
  5 个评论
Walter Roberson
Walter Roberson 2020-4-18
exactly which variables need to be recorded and at which points? For example do you need to record Fea before and after Fea = -Fea?
Stevie Rauch
Stevie Rauch 2020-4-18
I think im okay now. I built a structure within the for loop to display the most important values. Thank you for the help though.

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Programming 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by