next up previous contents
Next: Bibliography Up: Approssimazione tramite DFT troncata Previous: Visualizzazione dei risultati   Contents

Listato

function [ z ] = serie( emax )

%SERIE Approssimazione in serie di Fourier troncata

 

%Caricamento dati

prn=load('s00.prn');

t=prn(:,1);

vr=prn(:,4);

dati=load('data.txt');

R1=dati(2);

 

%Selezione di un periodo del segnale

trigger=find(t==0);

estremi=find(vr==vr(trigger));

tPer=t(estremi(1):estremi(2)-1);

vrPer=vr(estremi(1):estremi(2)-1);

icPer=vrPer/R1;

 

N=length(icPer);

ck=fft(icPer);

 

k=2;

e=emax+1;

while e>emax

ckRid=ck;

ckRid(k+1:N-k+1)=0;

x=ifft(ckRid);

x=real((x));

e=max(abs(icPer-x))/max(icPer)*100;

if k==floor((N+1)/2)

k=k+1;

break;

end

k=k+1;

end

 

%Parametri calcolati sul segnale approssimato

ICmax=max(x);

ICmin=min(x);

ICpp=ICmax-ICmin;

ICrapp=ICmax/ICmin;

 

%Valor medio

ICmedia=sum(x)/N;

 

%Valore efficace

ICrms=sqrt(sum(x.2)/N);

 

%Deviazione standard

sigmaIC=sqrt(ICrms2-ICmedia2);

 

%Fattore di cresta

ICmediaAbs=sum(abs(x))/N;

CF=ICmax/ICmediaAbs;

 

%Fattore di forma

FF=ICrms/ICmediaAbs;

 

%Parametri calcolati sul segnale di partenza

ICmaxR=max(icPer);

ICminR=min(icPer);

ICppR=ICmaxR-ICminR;

ICrappR=ICmaxR/ICminR;

 

%Valor medio

ICmediaR=sum(icPer)/N;

 

%Valore efficace

ICrmsR=sqrt(sum(icPer.2)/N);

 

%Deviazione standard

sigmaICR=sqrt(ICrmsR2-ICmediaR2);

 

%Fattore di cresta

ICmediaAbsR=sum(abs(icPer))/N;

CFR=ICmaxR/ICmediaAbsR;

 

%Fattore di forma

FFR=ICrmsR/ICmediaAbsR;

 

%Errori

eMax=abs((ICmax-ICmaxR)/ICmaxR)*100;

eMin=abs((ICmin-ICminR)/ICminR)*100;

ePP=abs((ICpp-ICppR)/ICppR)*100;

eRapp=abs((ICrapp-ICrappR)/ICrappR)*100;

eMedia=abs((ICmedia-ICmediaR)/ICmediaR)*100;

eRMS=abs((ICrms-ICrmsR)/ICrmsR)*100;

eSigma=abs((sigmaIC-sigmaICR)/sigmaICR)*100;

eCF=abs((CF-CFR)/CFR)*100;

eFF=abs((FF-FFR)/FFR)*100;

 

%Visualizzazione risultati

plot(tPer,icPer,'.');

hold on;

plot(tPer,x,'r');

xlabel('t [s]');

ylabel('Ic [mA]');

title('Ic e sua approssimazione in serie di Fourier');

 

stringa=['Numero campioni (periodo): ' num2str(N)];

disp(stringa);

 

stringa=['Numero armoniche: ' num2str(k-2)];

disp(stringa);

 

stringa=['ICmax = ' num2str(ICmax) ' mA  Errore: ' num2str(eMax) ' %'];

disp(stringa);

 

stringa=['ICmin = ' num2str(ICmin) ' mA  Errore: ' num2str(eMin) ' %'];

disp(stringa);

 

stringa=['ICpp = ' num2str(ICpp) ' mA  Errore: ' num2str(ePP) ' %'];

disp(stringa);

 

stringa=['ICrapp = ' num2str(ICrapp) ' mA  Errore: ' num2str(eRapp) ' %'];

disp(stringa);

 

stringa=['ICmedia = ' num2str(ICmedia) ' mA  Errore: ' num2str(eMedia) ' %'];

disp(stringa);

 

stringa=['ICrms = ' num2str(ICrms) ' mA  Errore: ' num2str(eRMS) ' %'];

disp(stringa);

 

stringa=['sigmaIC = ' num2str(sigmaIC) ' mA  Errore: ' num2str(eSigma) ' %'];

disp(stringa);

 

stringa=['CF = ' num2str(CF) '  Errore: ' num2str(eCF) ' %'];

disp(stringa);

 

stringa=['FF = ' num2str(FF) '  Errore: ' num2str(eFF) ' %'];

disp(stringa);

 

pause;

close;


next up previous contents
Next: Bibliography Up: Approssimazione tramite DFT troncata Previous: Visualizzazione dei risultati   Contents
2001-10-22