Getting mutliple lines into a legend from a for loop that provides different values
7 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Adam Lacey
am 10 Apr. 2022
Bearbeitet: Adam Lacey
am 10 Apr. 2022
Below is my code, im trying to get each of the lines on the plot onto the legend but am unsure how to go about it? I know i can just type it out manually for each gamma value e.g legend('2\gamma = 0','2\gamma = 1','2\gamma = 3',) but i would like a method that automatically adjusts to any variations i may make to gamma
clear all
for gamma = [0,0.5,1.5]
% Parameters
k = 5; % constant
zeta = 2*gamma; %Damping Coefficient
x_initial = 0.1; %Initial Position
v_initial = 0; %Initial Velocity
dt = 0.0001; % Time Step
t_vector = 0:dt:10; % Time Vector
x(1) = x_initial; %Initial position
v(1) = v_initial; %Initial velocity
%for loop
for n= 1:length(t_vector)-1
xslope = v(n);
x(n+1) = x(n) + xslope*dt;
vslope = -zeta*v(n) -k*x(n);
v(n+1) = v(n) + vslope*dt;
end
%plotting the graph
a = -zeta*(-v) -k*(-x);
plot(t_vector,a)
hold on;
end
title("Damped Simple Oscillator");
xlabel("Time");
ylabel("Amplitude");
lgd = legend(sprintf("2\\gamma = %d", zeta));
title(lgd, "\zeta")
grid on;
hold off;
0 Kommentare
Akzeptierte Antwort
Voss
am 10 Apr. 2022
all_gamma = [0 0.5 1.5];
for gamma = all_gamma
% your code
end
lgd = legend(sprintfc('2\\gamma = %d',2*all_gamma));
1 Kommentar
Weitere Antworten (1)
Siehe auch
Kategorien
Mehr zu Gamma Functions finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
