2017-12-01 5 views
0

Ich begann Simulink zu verwenden, und ich habe eine Frage zum Ändern einer Übertragungsfunktion mit Matlab For-Schleife.Change Transfer-Funktion in Schleife - Simulink

Lassen Sie sagen, ich habe folgendes Problem: enter image description here

Und mein Ziel ist es, dass "System" gleich sein:

enter image description here

Grundsätzlich I 5 Simulink-Simulationen von Zeit ausgeführt werden soll = 0 bis Zeit = 10 für 5 verschiedene Übertragungsfunktionen.

Jede Hilfe wird geschätzt. Danke.

+0

... 'I' ist die Simulation Zahl, zum Beispiel' i = 1: 5'? –

+2

Wollen Sie sagen, dass '(1 + s * 5/i)^i 'die Transferfunktion mit geschlossener Schleife oder die' System'-Transferfunktion für die Iteration 'i' ist? Außerdem würde ich keine S-Funktion verwenden, es ist unnötig kompliziert für so etwas. – am304

+0

Die Gleichung für Ihr System ist nicht-kausal. Bist du sicher, dass es korrekt ist? (Sollte die Macht -i statt ich sein?) –

Antwort

0

Wenn ich Ihre Frage nicht missverstanden habe, denke ich nicht, dass Sie Simulink für so etwas verwenden müssen. Das folgende ist mein Verständnis von dem, was Sie versuchen zu tun, kann es im Klar MATLAB durchgeführt werden (mit den control system toolbox):

t = 0:1e-3:10; 
u = ones(size(t)); 
y = zeros(5,length(t)); 
for k=1:5 
    H = (1 + tf('s')*5/k)^k; % system transfer function 
    CL = 1/((tf('s'))^2*(1-H)); % closed-loop transfer function 
    y(k,:) = (lsim(CL,u,t))'; 
end 
plot(t,y) 
legend('#1','#2','#3','#4','#5','Location','NorthWest') 
grid on 
xlabel('Time [s]') 
ylabel('Output') 

, die die folgenden Handlung erzeugt (in Octave). Nur die ersten zwei Iterationen geben einen Nicht-Null-Ausgang:

enter image description here