370 likes | 587 Views
Telekommunikation,Kiruna Signalanalys F1_C. Frekvensanalys. Exempel: Inspelat ljud av Tåg-vissla. Signalen i Frekvensplanet. Figuren genererad med program F31 i Appendix. Spektrogram: x-axel visar Tid y-axel visar Frekvens. VIKTIGT ATT FÖRSTÅ :
E N D
Telekommunikation,Kiruna Signalanalys F1_C F1_C_be
Frekvensanalys Exempel: Inspelat ljud av Tåg-vissla F1_C_be
Signalen i Frekvensplanet. Figuren genererad med program F31 i Appendix F1_C_be
Spektrogram: x-axel visar Tid y-axel visar Frekvens F1_C_be
VIKTIGT ATT FÖRSTÅ: Relationen mellan signalen i * Tidsplan * Frekvensplan Grundregel: ”Smalt i tid =Brett i frekvens” och vice versa. F1_C_be
<95% av signal-effekten i frekvens- Intervallet 0-0.05 20 0.05 MATLAB-kod: Se Ex1.m F1_C_be
5 0.2 F1_C_be
>99% av signal-effekten i frekvens- Intervallet 0-0.05 20 0.05 MATLAB-kod: Se Ex2.m F1_C_be
Hur beräknas effekten i en signal ? Effekt.m t=0:.01:9.99;%Tid f1=1;%Frekvens x=sin(2*pi*1*t);%Signal p_sin=sum(x.^2)/length(x); var_sin=var(x)%Signaleffekt % N=length(x); brus=randn(1,N);%Brus var_brus=var(brus)%Bruseffekt % z=x+brus; var(z)%Effekterna (varianserna ) adderas F1_C_be
Klassificering av signaler i tidsplanet: Tidsdiskret Periodisk Tidskontinuerlig Periodisk F1_C_be
VÅRAT VERKTYG FÖR ATT HOPPA MELLAN TIDS- OCH FREKVENS-PLANEN ÄR FFT (Tid Frekvens) IFFT (Frekvens Tid) ”Fast Fourier Transform” I MATLAB: fft RESP: ifft F1_C_be
Tidskontinuerliga periodiska signaler • Man kan visa att varje periodisk tidskontinuerlig signal med periodtiden T kan byggas upp av deltoner. • Dessa toner har frekvens k*ω0 där k är ett heltal och ω0 = 2π / T F1_C_be
Ex: Fourier-Serie för fyrkant-våg med frekvens 2 och amplitud 1 T F1_C_be
Tid Tid 1 delton = Grundtonen 1* ω0 6 deltoner: (1,3,5,7,9,11)*ω0 • Slutsatser: • För att återge snabba förändringar krävs många deltoner. • För att återge snabba förändringar krävs stor bandbredd. F1_C_be
ω0 11 ω0 ω0 F1_C_be
%Analysera en fyrkantvåg %med FFT frekvens=0.5; Fs=10;%Sampelfrekvens Dt=1/Fs;%Tidssteg N=100;%Antal sampel t=0:Dt:(N-1)*Dt;%Tid x=square(2*pi*0.5*t);%Fyrkantvåg figure(1) stem(t,x,'k');%Plotta vågen %FFT: y=abs(fft(x)); y=(2/N)*y;%Skala om df=Fs/N;%Frekvenssteg f=0:df:(N/2-1)*df; figure(2);%Frekvens stem( f,y(1:N/2),'k');%Observera index F1_C_be
Continuous-Time Fourier Series ( FS ) x(t) och X[k] bildar ett ” Fourier-par ” F1_C_be
Icke-periodiska signaler • Periodiska signaler kan användes för att testa funktionen hos ett system,men är inte särskilt intressanta i sig. • Teorin för kontinuerliga och tidsdiskretaFourier-serier kan emellertid utvecklas tillgälla även icke-periodiska signaler. F1_C_be
FT –generella egenskaper • Insignalen är kontinuerlig och icke- periodisk • Beskrivningen i frekvensplanet är inte periodisk • Beskrivningen i frekvensplanet är ibland svår att beräkna eftersom den bygger på integrering F1_C_be
x(t) a t Ex: F1_C_be
%F33 %Fourier-Transform %of single pulse tau=1; a=1; w=-20:.01:20; x=2*a*sin(w*tau/2)./w; plot(w,x,'k'); F1_C_be
Frekvensanalys igen! • Frekvensanalys av en okänd signal görs i praktiken alltid med datotorstöd. Med datorer är det naturligare att summera istället för att integrera och man bör därför använda en metod som enbart kräver summering och multiplikation. • Den enda Fourier-metod som detta gäller för är DTFT. Alltså för en periodisk tidsdiskret signal. F1_C_be
DFT = Discrete Fourier Transform • Om man har en digital signal så är denna ytterst sällan periodisk. För att få den att uppfattas som periodisk gör man därför följande trick: • Man tar den digitala signalens N st. sampel. Därefter placerar man ut kopior av sekvensen före och efter originalet och skapar sålunda en ny, periodisk signal. F1_C_be
Ex: Icke-periodisk till Periodisk %F34 %Non-periodic %2 periodic x=[2 4 7 8 6 5 1 -2]; nollor=zeros(1,length(x)); x1=[nollor x nollor]; subplot(2,1,1) stem(x1,'filled','k'); axis([0 25 -3 10]); % x2=[x x x]; subplot(2,1,2) stem(x2,'filled','k'); axis([0 25 -3 10]); F1_C_be
Om signalen är analog • Om signalen är analog måste den först samplas i N st. punkter med tidsintervall T • Man kan sedan beräkna frekvensinnehållet i signalen för intervallet 0 till fs [Hz], där fs är samplingsfrekvensen = 1/T F1_C_be
Val av samplingstid T • T ( samplingstiden ) måste väljas så att att man får minst 2 sampel på varje period av högsta frekvenskomponenten fmax i signalen. 1/T = fs >2 fmax • Om fmax inte är känd måste den analoga signalen filtreras så att inga frekvenskomponenter > fs /2 finns kvar vid samplingen. F1_C_be
Val av antal sampel N • Om man gör frekvensanalys på N sampel kommer man att kunna beräkna frekvensinnehållet i N st. frekvenser på intervallet 0 till fs. • Frekvensupplösningen blir fs/N [Hz]. • Vid givet fs styrs alltså valet av antal sampel av den frekvensupplösning man önskar. F1_C_be
FFT forts. Kod för frekvensanalys % Frekvensanalys med FFT % figure(2) Y=abs(fft(ys)); df=fs/Ns;%Frekvensupplösning f=0:df:(Ns-1)*df; plot(f,Y,'k'); xlabel('Frekvens [Hz]'); F1_C_be
FFT forts. Om man vill rita frekvens-innehållet från -fs/2 till fs/2: figure(3) Y=abs(fft(ys)); f=-Ns/2*df:df:(Ns-1)/2*df; plot(f,fftshift(Y),'k'); xlabel('Frekvens [Hz]'); F1_C_be
FFT utskrift 0 4.0000 0.1563 4.0988 0.3125 4.4270 0.4688 5.1101 0.6250 6.5239 0.7813 10.1575 0.9375 32.4705 1.0938 19.8411 1.2500 6.8284 1.4063 3.8508 1.5625 2.5354 1.7188 1.7891 ... ... Utskrift av frekvens och DFT-värdena kan göras: [ f’ , Y’ ] F1_C_be
Ändrad samplingsfrekvens • Den FFT = DFT som gjorts kan förbättras, men hur? • Prova med att öka samplings- frekvens, dock utan öka N • fs = 20 Hz • fs = 100 Hz • Kom ihåg: Frekvensupplösningen df = fs / N F1_C_be
Ändrat antal sampel Nu med N = 512 och fs = 100: F1_C_be
Slutligen brukar man multiplicera med en fönsterfunktion • Multiplicera tidsfunktionen med: • hamming(Ns)’ ( obs transponat ) • Ns = tidsfunktionens längd F1_C_be
%F31 %Load train.m %Do FFT % load train Fs=8192;%Sampling frequency N=length(y);%Nr of samples dt=1/Fs;%Time resolution t=0:dt:(N-1)*dt;%Time axis figure(1) plot(t,y,'k'); xlabel('Time [sek]'); % df=Fs/N;%Frequency resolution f=0:df:(N/2-1)*df;%Frequency axis yy=abs(fft(y)); yy=yy(1:(N/2)); figure(2) plot(f,yy,'k'); xlabel('Frequency [Hz]'); F1_C_be
%Ex1.m %Beräknar enkelsidigt spektrum %för en puls. %Pulsen beskrivs: % x=zeros(1,100);%100 nollor på rad tau=20;%pulsbredd x(1:tau)=1;%Fyll i med 20 1:or Fs=1;%Samplingsfrekvens figure(1) stem(x,'k'); %Spektrum med FFT Dt=1;%1/Fs N=length(x); t=0:Dt:(N-1)*Dt; y=abs(fft(x)); Df=Fs/N;%Frekvensupplösning f=0:Df:(N/2-1)*Df; y=y(1:N/2);%Spegelbilden ej med figure(2) stem(f,y,'k');%FFT plottas hold F1_C_be
%Ex2.m %Beräknar enkelsidigt spektrum %för en halvperiod-sinus. %Pulsen beskrivs: x=zeros(1,100); tau=20;%pulsbredd x(1:tau)=sin(1*pi*(0:tau-1)/tau); Fs=1;%Samplingsfrekvens figure(1) stem(x,'k'); %Spektrum med FFT Dt=1;%1/Fs N=length(x); t=0:Dt:(N-1)*Dt; y=abs(fft(x)); Df=Fs/N;%Frekvensupplösning f=0:Df:(N/2-1)*Df; y=y(1:N/2);%Spegelbilden ej med figure(2) stem(f,y,'k');%FFT plottas % totaleffekt=sum(y.^2); z2=y(1:8); deleffekt=sum(z2.^2) q=(deleffekt/totaleffekt)*100 F1_C_be