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.
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

Elettrotecnica e non solo (admin)
Un gatto tra gli elettroni (IsidoroKZ)
Esperienza e simulazioni (g.schgor)
Moleskine di un idraulico (RenzoDF)
Il Blog di ElectroYou (webmaster)
Idee microcontrollate (TardoFreak)
PICcoli grandi PICMicro (Paolino)
Il blog elettrico di carloc (carloc)
DirtEYblooog (dirtydeeds)
Di tutto... un po' (jordan20)
AK47 (lillo)
Esperienze elettroniche (marco438)
Telecomunicazioni musicali (clavicordo)
Automazione ed Elettronica (gustavo)
Direttive per la sicurezza (ErnestoCappelletti)
EYnfo dall'Alaska (mir)
Apriamo il quadro! (attilio)
H7-25 (asdf)
Passione Elettrica (massimob)
Elettroni a spasso (guidob)
Bloguerra (guerra)

