Questo blog raccoglie gli appunti universitari dell'autore, per averli sempre a portata di mano e magari per dare una mano a qualcuno!
lunedì 18 novembre 2013
MatLab - Esercitazione #3 - Calcolo della pseudoinversa e ingresso somma di sinusoidi
%% Parte 1
Durata della simulazione
Tfin = 100;
Periodo di campionamento (serve per definire il vettore con tempo discreto).
Ts = 0.01;
Tempo discreto (da 0 a 100, con passo di 0.01). Vettore colonna per Simulink.
timed = [0:Ts:Tfin]';
Ricopio i dati del problema.
a1 = 1;
a2 = 1;
a3 = 1;
a4 = 1;
w1 = 0.1;
w2 = 1;
w3 = 10;
w4 = 50;
Viene definito l'ingresso forzante costituito da una somma di sinusoidi.
Non uso .* perchè non faccio il prodotto elemento per elemento.
u = a1*sin(w1*timed) + a2*sin(w2*timed) + a3*sin(w3*timed) + a4*sin(w4*timed);
Viene graficato l'ingresso per vedere la somma delle sinusoidi.
figure
plot (timed, u)
grid on
%% Punto 2
Simulato lo schema con ingresso u; grafico tratteggiato di rosso negli istanti Ts (utilizzato timed).
sim('Plant_Model_mio', Tfin)
hold on
plot(timed, y, 'red')
%% Punto 3
Si assume che l'ordine del sistema (dato, quindi non sappiamo come è fatto dentro) sia 3.
E' richiesto di costruire la matrice dell'immagine, questo viene fatto con un ciclo for.
n = 3;
N = length(y);
y1 = y(n+1:N); %Oppure y1 = y(n+1, end) se non calcolo length del vettore
Q1 = [];
Q2 = []; %Partizioniamo per semplicità
for i=n: -1 :1
Q1 = [Q1 y(i:N-n+i-1)];
Q2 = [Q2 y(i:N-n+i-1)];
end
Vengono uniti i due risultati.
Da notare che il codice [A B] concatena A con B, e quindi A = [A B] crea A concatenando ad ogni ciclo il contenuto di B.
Q = [Q1 Q2];
%%Punto 4
Calcolo della pseudoinversa tramite il comando pinv; risoluzione dell'equazione in alfa.
alpha = pinv(Q)*y1 %Equivalente a alpha1 = inv(Q'*Q)*Q'*y1;
A = [1; -alpha(1:n)]'
B = [alpha(n+1:2*n)]'
%%Punto 5
Definire in Matlab la funzione di trasferimento discreta G(z) del sistema identificato.
Ricordiamo che tf: Gz = tf(B,A,T) dove B e A sono rispettivamente i vettori che definiscono i polinomi a numeratore e denominatore e T `e il periodo di campionamento
Gz = tf(B, A, Ts)
Iscriviti a:
Commenti sul post (Atom)
Nessun commento:
Posta un commento