FFT in matlab

Strumenti informatici per la matematica applicata, le simulazioni, il disegno: Mathcad, Matlab, Scilab, Microcap, PSpice, AutoCad ...

Moderatori: Foto Utenteg.schgor, Foto Utentedimaios

Avatar utente
Foto UtenteLaura89
0 2
Messaggi: 4
Iscritto il: 12 nov 2010, 11:47
0
voti

[1] FFT in matlab

Messaggioda Foto UtenteLaura89 » 25 ott 2013, 23:54

Ciao a tutti, sto implementando in ambiente matlab un codice che realizzi la space vector modulation per un inverter trifase. Uno dei punti richiesti è la rappresentazione dello spettro della tensione in uscita dall'inverter. Ho scritto il seguente codice:

Codice: Seleziona tutto

function out=spettro(ValoreNelTempo,IntervalloTempo,fmax)

dime = max(size(ValoreNelTempo));
% non si possono richiedere più armoniche del numero di campioni-1
f0 = 1/IntervalloTempo;
n = floor(fmax/f0);
if (n>dime)
    n=dime-1;
end
ValoreNelTempo=reshape(ValoreNelTempo,dime,1);
tempo = linspace(0,IntervalloTempo,length(ValoreNelTempo));

a=fft(ValoreNelTempo);

Armoniche=2*abs(a(2:dime))/dime;
numarm=1:n;


    figure(1), subplot(2,1,1)
   
    bar(numarm*f0,Armoniche(numarm),0.5,'r')
    xlabel('frequenza - Hz'),grid
   
    figure(1), subplot(2,1,2)
    plot(tempo,ValoreNelTempo,'b-');
    xlabel('tempo - s'), grid
   
out=Armoniche(numarm);

Che poi ho richiamato nel seguente modo:

Codice: Seleziona tutto

tempo = simout.time;
% tempo= t(time>0.3)
 y = simout.signals.values;
% signal_mod= y(time>0.3)
out = spettro(y,max(tempo),2/Ts);

figure(1),
subplot(2,1,1), ylim([0 40]), xlim([0 100])
legend('spettro del segnale campionato')
subplot(2,1,2), ylim([-100 100]), xlim([0 2])
legend('laura')

Dove simout è il segnale che prendo da uno scope di simulink.

Ottengo il grafico allegato.
Cattura.JPG
Cattura.JPG (120.78 KiB) Visto 1168 volte

Questo grafico non è corretto, in quanto dovrei fare la FFT soltanto della parte sinusoidale (omettendo il transitorio) e poi il prof mi ha detto di prendere un numero intero di periodi. Non so dove mettere le mani. Potreste per favore aiutarmi?
Grazie in anticipo

Avatar utente
Foto Utentedimaios
30,2k 7 10 12
G.Master EY
G.Master EY
Messaggi: 3381
Iscritto il: 24 ago 2010, 14:12
Località: Behind the scenes
0
voti

[2] Re: FFT in matlab

Messaggioda Foto Utentedimaios » 28 ott 2013, 11:45

Inizia con il trovare lo zero crossing del segnale.
Per avere un numero intero di periodi prendi il primo e l'ultimo zero crossing con derivata positiva.
Il segnale compreso tra i due limiti e' quello che cerchi.

Prima di fare la FFT dovresti comunque finestrare "un minimo" il segnale.
Ingegneria : alternativa intelligente alla droga.


Torna a “Programmi applicativi: simulatori, CAD ed altro”