Help With for loop with tranfer function and step
2 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Davide Cannavacciuolo
le 20 Nov 2023
Commenté : Sam Chak
le 20 Nov 2023
s=tf('s');
G=1/(s^2+0.4*s+0.1);
K=[1 2 3 4 5 6];
figure
hold on
for i=1:1:length(K)
T=K(i)*G;
step(T)
S=stepinfo(T);
L=S.Peak(T)
end
I have this code but i get the error : "Unable to use a value of type tf as an index."
I want actually to make a vector containg all the values of the peak values and only then plot the peaks with the corresponding value of gain.
Thank you in advance
0 commentaires
Réponse acceptée
Sam Chak
le 20 Nov 2023
You probably want to plot like this:
s = tf('s');
G = 1/(s^2 + 0.4*s + 0.1);
K = [1 2 3 4 5 6];
figure(1)
hold on
for i = 1:length(K)
T = K(i)*G;
step(T)
S = stepinfo(T);
L(i) = S.Peak;
end
grid on
hold off
figure(2)
plot(K, L, '-o'), grid on
xlabel('Gain'), ylabel('Peak')
2 commentaires
Plus de réponses (1)
Dyuman Joshi
le 20 Nov 2023
Modifié(e) : Dyuman Joshi
le 20 Nov 2023
There is no field in the struct 'S' with name 'T'. Thus you get the error in the line you defined 'S'.
I suspect that you want to get the 'Peak' value for each system -
s=tf('s');
G=1/(s^2+0.4*s+0.1);
K=[1 2 3 4 5 6];
%Preallocation
L = K.*0;
figure
hold on
for i=1:1:length(K)
T=K(i)*G;
step(T);
S=stepinfo(T);
L(i)=S.Peak;
end
L
Voir également
Catégories
En savoir plus sur Loops and Conditional Statements dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!


