Telekommunikation Kiruna Signalanalys F 1Cbe 1 Frekvensanalys Exempel
Telekommunikation, Kiruna Signalanalys F 1_C_be 1
Frekvensanalys Exempel: Inspelat ljud av Tåg-vissla F 1_C_be 2
Signalen i Frekvensplanet. Figuren genererad med program F 31 i Appendix F 1_C_be 3
Spektrogram: x-axel visar Tid y-axel visar Frekvens F 1_C_be 4
VIKTIGT ATT FÖRSTÅ: Relationen mellan signalen i * Tidsplan * Frekvensplan Grundregel: ”Smalt i tid =Brett i frekvens” och vice versa. F 1_C_be 5
Tid Frekvens <95% av signaleffekten i frekvens. Intervallet 0 -0. 05 20 0. 05 MATLAB-kod: Se Ex 1. m F 1_C_be 6
Tid Frekvens 5 0. 2 F 1_C_be 7
Tid Frekvens >99% av signaleffekten i frekvens. Intervallet 0 -0. 05 20 0. 05 MATLAB-kod: Se Ex 2. m F 1_C_be 8
Hur beräknas effekten i en signal ? Effekt. m t=0: . 01: 9. 99; %Tid f 1=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 F 1_C_be 9
Klassificering av signaler i tidsplanet: Tidsdiskret Periodisk Tidskontinuerlig Icke- Periodisk Tidsdiskret Icke-Periodisk F 1_C_be 10
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 F 1_C_be 11
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 F 1_C_be 12
Ex: Fourier-Serie för fyrkant-våg med frekvens 2 och amplitud 1 T F 1_C_be 13
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. F 1_C_be 14
ω0 ω0 F 1_C_be 11 ω0 15
%Analysera en fyrkantvåg %med FFT %FFT: frekvens=0. 5; y=abs(fft(x)); Fs=10; %Sampelfrekvens y=(2/N)*y; %Skala om Dt=1/Fs; %Tidssteg df=Fs/N; %Frekvenssteg N=100; %Antal sampel f=0: df: (N/2 -1)*df; t=0: Dt: (N-1)*Dt; %Tid figure(2); %Frekvens x=square(2*pi*0. 5*t); %Fyrkantvåg stem( f, y(1: N/2), 'k'); %Observera index figure(1) stem(t, x, 'k'); %Plotta vågen F 1_C_be 16
Continuous-Time Fourier Series ( FS ) x(t) och X[k] bildar ett ” Fourier-par ” F 1_C_be 17
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 tidsdiskreta Fourier-serier kan emellertid utvecklas till gälla även icke-periodiska signaler. F 1_C_be 18
Continuous-Time Fourier Transform ( FT ) F 1_C_be 19
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 F 1_C_be 20
Ex: x(t) a t F 1_C_be 21
%F 33 %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'); F 1_C_be 22
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. F 1_C_be 23
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. F 1_C_be 24
Ex: Icke-periodisk till Periodisk %F 34 %Non-periodic %2 periodic x=[2 4 7 8 6 5 1 -2]; nollor=zeros(1, length(x)); x 1=[nollor x nollor]; subplot(2, 1, 1) stem(x 1, 'filled', 'k'); axis([0 25 -3 10]); % x 2=[x x x]; subplot(2, 1, 2) stem(x 2, 'filled', 'k'); axis([0 25 -3 10]); F 1_C_be 25
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 F 1_C_be 26
Val av samplingstid T • T ( samplingstiden ) måste väljas så 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. F 1_C_be 27
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. F 1_C_be 28
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]'); F 1_C_be 29
FFT forts. Om man vill rita frekvensinnehållet från -fs/2 till fs/2: figure(3) Y=abs(fft(ys)); f=-Ns/2*df: (Ns-1)/2*df; plot(f, fftshift(Y), 'k'); xlabel('Frekvens [Hz]'); F 1_C_be 30
FFT utskrift Utskrift av frekvens och DFT-värdena kan göras: 0 [ f’ , Y’ ] 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 . . . F 1_C_be . . . 31
Ändrad samplingsfrekvens • Den FFT = DFT som gjorts kan förbättras, men hur? • Prova med att öka samplingsfrekvens, dock utan öka N • fs = 20 Hz • fs = 100 Hz • Kom ihåg: Frekvensupplösningen df = fs / N F 1_C_be 32
Ändrat antal sampel Nu med N = 512 och fs = 100: F 1_C_be 33
Slutligen brukar man multiplicera med en fönsterfunktion • Multiplicera tidsfunktionen med: • hamming(Ns)’ ( obs transponat ) • Ns = tidsfunktionens längd F 1_C_be 34
%F 31 %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]'); F 1_C_be 35
%Ex 1. 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 F 1_C_be 36
%Ex 2. 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); z 2=y(1: 8); deleffekt=sum(z 2. ^2) q=(deleffekt/totaleffekt)*100 F 1_C_be 37
- Slides: 37