Help With For Loops in Plotting Problem
4 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Not_sharpest_tool.mat
am 25 Jul. 2019
Bearbeitet: per isakson
am 25 Jul. 2019
I have written this formula and it works well...
The thing is I need to use For loops for the values of "Zeta" to change. I need to be able to plot four graphs with values 0.2, 0.4, 0.6, 0.8 for Zeta.
Should I use the For loop on the C_t formula? or would it be better for only the value of Zeta to change? Either way I can't seem to make it work. Any suggestions on how to proceed?
Zeta=0.2;
Nat_fr=2.5; %Natural Frequency
Beta= sqrt(1-Zeta.^2);
Tan_theta=Beta/Zeta;
theta=atan(Tan_theta); %Angle in radians
t= linspace(0,15,100);
%% Equation
c_t= 1-(1/(sqrt(1-Zeta.^2))).*(exp(-Zeta.*Nat_fr.*t)).*sin((sqrt(1-Zeta)).*Nat_fr.*t+atan((sqrt(1-Zeta))/Zeta));
%% Plot
plot(t,c_t)
0 Kommentare
Akzeptierte Antwort
Raj
am 25 Jul. 2019
Bearbeitet: Raj
am 25 Jul. 2019
temp=1;
t= linspace(0,15,100);
Nat_fr=2.5; %Natural Frequency
for Zeta=0.2:0.2:0.8
Beta (temp,1)= sqrt(1-Zeta.^2);
Tan_theta(temp,1)=Beta(temp,1)/Zeta;
theta(temp,1)=atan(Tan_theta(temp,1)); %Angle in radians
%% Equation
c_t= 1-(1/(sqrt(1-Zeta.^2))).*(exp(-Zeta.*Nat_fr.*t)).*sin((sqrt(1-Zeta)).*Nat_fr.*t+atan((sqrt(1-Zeta))/Zeta));
%% Plot
plot(t,c_t)
hold on
temp=temp+1;
end
legend ('Zeta=0.2','Zeta=0.4','Zeta=0.6','Zeta=0.8');
grid on;
0 Kommentare
Weitere Antworten (1)
per isakson
am 25 Jul. 2019
Bearbeitet: per isakson
am 25 Jul. 2019
Either should work.
I prefer to keep plot() outside the loop because of speed. That requires to make c_t a matrix, which in turn requires an interger loop-counter to reference c_t. Thus, something like this
function cssm1()
Nat_fr=2.5; %Natural Frequency
Zeta = [0.2,0.4,0.6,0.8];
t = linspace(0,15,100);
c_t = nan( length(Zeta), length(t) ); % preallocate
for jj = 1 : length( Zeta )
% Beta= sqrt(1-Zeta(jj).^2);
% Tan_theta=Beta/Zeta(jj);
% theta = atan(Tan_theta); %Angle in radians
%% Equation
c_t(jj,:) = 1-(1/(sqrt(1-Zeta(jj).^2))).*(exp(-Zeta(jj).*Nat_fr.*t)).*sin((sqrt(1-Zeta(jj))).*Nat_fr.*t+atan((sqrt(1-Zeta(jj)))/Zeta(jj)));
end
%% Plot
plot( t, c_t )
end
sqrt(1-Zeta(jj)) is calculated three times in the equation, which is a bit of waste of cpu-cycles. Ok, that's why you calculate Beta.
I put the code in a function to avoid cluttering of my base workspace.
0 Kommentare
Siehe auch
Kategorien
Mehr zu Loops and Conditional Statements 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!