Pagina 1 di 4

Funzione di trasferimento con matlab

MessaggioInviato: 29 set 2011, 17:10
da parolina
Salve!!!
Dovrei riuscire ad ottenere con matlab il grafico del modulo e della fase della seguente funzione di trasferimento
T(s)=\frac{3.24*10^{10}}{s^2+s*254,6*10^3+ 3.24*10^{10}}
Qualcuno potrebbe aiutarmi col codice?? Purtroppo non l'ho quasi mai utilizzato.
Grazie mille

Re: Funzione di trasferimento con matlab

MessaggioInviato: 29 set 2011, 17:31
da parolina
E' corretto cosi??

s = tf('s');
W = (3.24*10^-10)/(s^2+254.6*10^3*s+3.24*10^-10);

bode(W)

Re: Funzione di trasferimento con matlab

MessaggioInviato: 29 set 2011, 17:49
da IsidoroKZ
Puoi anche definire separatamente numeratore e denominatore. Ma aspettiamo il tuo angelo custode Foto UtenteDirtyDeeds.

num=[quello che e`, solo i coefficienti];
den=[stessa roba, per te: 1 254600 3.24e-10];
sysP=tf(num,den);
w=logspace(1,5); %questo per indicare le frequenze, nell'esempio parte da 10^1 fino a 10^5
[mag,phase]=bode(sysP,w);
loglog(w,squeeze(mag)),grid
semilog(w,squeeze(phase)),grid

Re: Funzione di trasferimento con matlab

MessaggioInviato: 29 set 2011, 19:58
da parolina
Grazie mille...ma col codice che mi hai passato cosa visualizzo?

Re: Funzione di trasferimento con matlab

MessaggioInviato: 29 set 2011, 20:00
da DirtyDeeds
Eh, questa volta non posso essere d'aiuto: ormai da alcuni anni ho abbandonato Matlab per Scilab e la sintassi per i diagrammi di Bode è differente.

Voglio comunque dare un consiglio a Foto Utenteparolina: non scrivere le funzioni di trasferimento mettendo direttamente i numeri, usa dei parametri: se devi cambiare qualcosa è più semplice e sei meno soggetta ad errori. La tua funzione di trasferimento è una funzione del second'ordine che può essere scritta come

T(s)=\frac{\omega_0^2}{s^2+2\zeta\omega_0 s+\omega_0^2}

A questo punto, fatti uno script matlab che inizi con

Codice: Seleziona tutto
w0 = ....
z = ...


E, ancora meglio, normalizza s rispetto a \omega_0.

Re: Funzione di trasferimento con matlab

MessaggioInviato: 29 set 2011, 20:53
da parolina
ehm..ci provo!!!!Grazie infinite!!

Re: Funzione di trasferimento con matlab

MessaggioInviato: 29 set 2011, 21:12
da DirtyDeeds
Altra cosa: in matlab, se devi scrivere un numero come

3{,}24\times10^{-10}

non scrivere

Codice: Seleziona tutto
3.24*10^-10


ma

Codice: Seleziona tutto
3.24e-10



PS: +1 babà :mrgreen:

Re: Funzione di trasferimento con matlab

MessaggioInviato: 29 set 2011, 21:16
da IsidoroKZ
C'era gia` nel mio esempio: una roba al cioccolato a me!

Re: Funzione di trasferimento con matlab

MessaggioInviato: 2 ott 2011, 14:45
da RenzoDF
parolina ha scritto:E' corretto cosi??
s = tf('s');
W = (3.24*10^-10)/(s^2+254.6*10^3*s+3.24*10^-10);
bode(W)


Si, e' corretto, se hai il Control Toolbox.
Matlab "capisce" anche la tua scrittura, ma e' assolutamente preferibile usare la variante suggerita da Foto UtenteDirtyDeeds per la notazione esponenziale.

Io userei la notazione abbreviata con i soli coefficienti
>> H = tf([3.24e-10],[1 254.6e3 3.24e-10])

specificando poi il range con
>>bode(H,{1e2,1e7})

Se non disponi del Control Toolbox puoi usare dei metodi alternativi, vedi per esempio

http://www.csus.edu/indiv/t/tatror/EEE_ ... ctions.pdf

BTW ricordo che per una rappresentazione asintotica e' disponibile un Free Tool di Erik Cheever

http://www.mathworks.com/matlabcentral/ ... hange/2664
con tutorial su
http://lpsa.swarthmore.edu/Bode/BodePlotGui.html
ma anche
http://www.mathworks.com/matlabcentral/ ... root-locus

PS: per me niente baba' ... solo 1MK :mrgreen:

Re: Funzione di trasferimento con matlab

MessaggioInviato: 3 ott 2011, 14:48
da parolina
Grazie!!!Come siete DOLCI!!
comunque il prof adesso mi ha detto di utilizzare la notazione VETTORIALE.Avete idea di come possa fare???
Questa che devo ricavare con Matlab è la funzione di trasferimento a ciclo chiuso del mio PLL che ha :
K=127.324*10^3
f_{LPF}=40.528*10^3
La funzione di trasferimento è T(s)=\frac{K 2\pi f_{LPF}}{ s^2 + s2\pi f_{LPF}+ K 2\pi f_{LPF}}
Mi ha detto al posto di s utilizzare j\omega...aiuto