matlab信号频率分析实验报告,信号抽样实验报告
大連理工大學實驗報告
學院(系): 專業: 班級:
姓 名: 學號: 組: ___ 實驗時間: 實驗室: 實驗臺:
指導教師簽字: 成績:
實驗三 信號抽樣
一、實驗目的
1 學會運用MATLAB 完成信號抽樣及對抽樣信號的頻譜進行分析; 2 學會運用MATLAB 改變抽樣間隔,觀察抽樣后信號的頻譜變化; 3 學會運用MATLAB 對抽樣后的信號進行重建。
二、習題
1. 設有三個不同頻率的正弦信號,頻率分別為f 1=100Hz , f 2=200Hz , f 3=3800Hz 。
現在用抽樣頻率f 3=3800Hz 對這三個正弦信號進行抽樣,用MA TLAB 命令畫出各抽樣信號的波形及頻譜,并分析頻率混疊現象。 解:分別寫出三個頻率正弦波的代碼與圖形: (f1=100HZ的正弦信號) 代碼如下: Ts=1/3800; dt=0.0001;
t1= -0.008:dt:0.008;
ft=sin(2*pi*100*t1).*(uCT(t1+0.005)-uCT(t1-0.005)); subplot(221);
plot(t1,ft), grid on;
axis([-0.006 0.006 -1.1 1.1]); xlabel('Time(sec)'),ylabel('f(t)') title('正弦信號波形 ');
N=5000; k = -N:N;
W = 2*pi*k/((2*N+1)*dt); Fw= dt*ft*exp(-j*t1'*W); subplot(222); plot(W,abs(Fw)); grid on;
axis([-30000 30000 0 0.006]); xlabel('\omega'),ylabel('F(w)'); title('正弦信號的頻譜'); t2=-0.008:Ts:0.008;
fst=sin(2*pi*100*t2).*(uCT(t2+0.005)-uCT(t2-0.005)); subplot(223);
plot(t1,ft,':'),hold on; stem(t2,fst),grid on;
axis([-0.005 0.005 -1.1 1.1]); xlabel('Time(sec)'),ylabel('fs(t)'); title('抽樣后的信號'),hold off; Fsw= Ts*fst*exp(-j*t2'*W); subplot(224);
plot(W,abs(Fsw)), grid on; axis([-30000 30000 0 0.006]); xlabel('\omega'),ylabel('Fs(w)'); title('抽樣信號的頻譜');
matlab 波形如下:
100HZ 正弦信號波形
0.5-0.5
-1-6
-3
100HZ 正弦信號的頻譜
F (w )
-3-4
-2
02Time(sec)
4x 10
6
-3
-3
f (t )
-2-1012x 10
3
4
ω
100HZ 抽樣信號的頻譜
100HZ 抽樣后的信號
-5
F s (w )
0Time(sec)
5x 10
-3
f s (t )
-3
-2-1012x 10
3
4
ω
其中單個正弦信號(未經抽樣)的頻譜放大后如下:
(200HZ 的正弦信號) 代碼如下:
Ts=1/3800; dt=0.0001;
t1= -0.003:dt:0.003;
ft=sin(2*pi*200*t1).*(uCT(t1+0.0025)-uCT(t1-0.0025)); subplot(221);
plot(t1,ft), grid on;
axis([-0.003 0.003 -1.1 1.1]); xlabel('Time(sec)'),ylabel('f(t)') title('200HZ正弦信號波形 '); N=5000; k = -N:N;
W = 2*pi*k/((2*N+1)*dt); Fw= dt*ft*exp(-j*t1'*W); subplot(222); plot(W,abs(Fw)); grid on;
axis([-30000 30000 0 0.003]); xlabel('\omega'),ylabel('F(w)'); title('200HZ正弦信號的頻譜'); t2=-0.003:Ts:0.003;
fst=sin(2*pi*200*t2).*(uCT(t2+0.0025)-uCT(t2-0.0025)); subplot(223);
plot(t1,ft,':'),hold on; stem(t2,fst),grid on;
axis([-0.003 0.003 -1.1 1.1]); xlabel('Time(sec)'),ylabel('fs(t)');
title('200HZ抽樣后的信號'),hold off;
Fsw= Ts*fst*exp(-j*t2'*W); subplot(224);
plot(W,abs(Fsw)), grid on; axis([-30000 30000 0 0.003]); xlabel('\omega'),ylabel('Fs(w)'); title('200HZ抽樣信號的頻譜');
matlab 波形如下:
200HZ 正弦信號波形
0.5-0.5
-1-3
-3
200HZ 正弦信號的頻譜
F (w )
-3-2
-1
01Time(sec)
2x 10
3
-3
-3
f (t )
-2-1012x 10
3
4
ω
200HZ 抽樣信號的頻譜
200HZ 抽樣后的信
號
-3
F s (w )
-2
-1
01Time(sec)
2x 10
3
-3
f s (t )
-3
-2-1012x 10
3
4
ω
(3800HZ 正弦信號) 代碼如下: Ts=1/3800; dt=0.00001;
t1= -1/7600:dt:1/7600;
ft=sin(2*pi*3800*t1).*(uCT(t1+1/7600)-uCT(t1-1/7600)); subplot(221);
plot(t1,ft), grid on;
axis([-1/7600 1/7600 -1.1 1.1]); xlabel('Time(sec)'),ylabel('f(t)') title('3800HZ正弦信號波形 '); N=10000; k = -N:N;
W = 2*pi*k/((2*N+1)*dt); Fw= dt*ft*exp(-j*t1'*W); subplot(222); plot(W,abs(Fw)); grid on;
axis([-200000 200000 0 0.00015]); xlabel('\omega'),ylabel('F(w)'); title('3800HZ正弦信號的頻譜'); t2=-1/7600:Ts:1/7600;
fst=sin(2*pi*3800*t2).*(uCT(t2+1/7600)-uCT(t2-1/7600)); subplot(223);
plot(t1,ft,':'),hold on; stem(t2,fst),grid on;
axis([-1/7600 1/7600 -1.1 1.1]); xlabel('Time(sec)'),ylabel('fs(t)');
title('3800HZ抽樣后的信號'),hold off; Fsw= Ts*fst*exp(-j*t2'*W); subplot(224);
plot(W,abs(Fsw)), grid on;
axis([-200000 200000 0 0.00015]); xlabel('\omega'),ylabel('Fs(w)'); title('3800HZ抽樣信號的頻譜');
matlab 波形如下:
3800HZ 正弦信號波形
-1
0Time(sec)
3800HZ 抽樣后的信號
-1
0Time(sec)
1x 10
-4
1.51
-4
3800HZ 正弦信號的頻譜
F (w )
0.50
-2
-4
f (t )
1x 10
-1
-4
01
x 10
2
5
ω
1.513800HZ 抽樣信號的頻譜
F s (w )
f s (t )
0.50-2
-101
x 10
2
5
ω
可知f=3800Hz的頻譜直接混疊在一起,出不了明顯的頻譜圖
2. 結合抽樣定理,用MATLAB 編程實現Sa (t ) 信號經沖激脈沖抽樣后得到的抽樣信號
f s (t ) 及其頻譜,并利用f s (t ) 重構Sa (t ) 信號。
解:認為原Sa(t)的信號帶寬為wm=2,取wc=1.2wm 代碼如下:
wm=2;
wc=1.2*wm; Ts=1; dt=0.1;
t1= -10:dt:10;
ft=sinc(t1/pi).*(uCT(t1+10)-uCT(t1-10)); N=5000; k = -N:N;
W = 2*pi*k/((2*N+1)*dt); n=-100:100; nTs=n*Ts;
fst=sinc(nTs/pi).*(uCT(nTs+10)-uCT(nTs-10)); subplot(221);
plot(t1,ft,':'),hold on; stem(nTs,fst),grid on; axis([-10 10 -0.4 1.1]);
xlabel('Time(sec)'),ylabel('fs(t)'); title('Sa(t)抽樣后的信號'),hold off; Fsw= Ts*fst*exp(-j*nTs'*W); subplot(222);
plot(W,abs(Fsw)), grid on; axis([-20 20 0 4]);
xlabel('\omega'),ylabel('Fs(w)'); title('Sa(t)抽樣信號的頻譜'); t=-10:dt:10;
f=fst*Ts*wc/pi*sinc((wc/pi)*(ones(length(nTs),1)*t-nTs'*ones(1,length(t)))); subplot(223); plot(t,f),grid on;
axis([-10 10 -0.4 1.1]); xlabel('t'),ylabel('f(t)');
title('由f(nTs)信號重建得到Sa(t)信號'); error = abs(f-ft); subplot(224)
plot(t,error),grid on
xlabel('t'),ylabel('error(t)');
title('重建信號與原Sa(t)信號的絕對誤差');
matlab 的波形如下:
Sa(t)抽樣后的信
號
Sa(t)
抽樣信號的頻譜
F s (w )
-5
0Time(sec)
5
10
f s (t )
-10
-20
-1001020
ω
重建信號與原Sa(t)信號的絕對誤差
由f(nTs) 信號重建得到Sa(t)信
號e r r o r (t )
-5
0t
5
10
-10
f (t )
-10
-5
0t
510
三、實驗體會
本次實驗遇到的問題: 第一題:用書上的例子的代碼解題,但是發現抽樣信號的頻譜與未抽樣信號的頻譜除了周期延拓外并沒有幅度減去應有的倍數(變為1/T),后來發現算未經抽樣的頻譜公式為:Fw= dt*ft*exp(-j*t1'*W);,而經過抽樣后的頻譜的公式:Fsw= Ts*fst*exp(-j*t2'*W);兩者沒有實質的差別,唯一的區別是兩者時間的單元分別為:dt 和Ts ,這樣并不能引起幅度的變化,雖然解釋了圖形幅度沒變,但是不知道理論上圖形幅度縮減一定的倍數(1/T)的原因。
第二題:解本題時本來也想先作出未經抽樣時Sa(t)的頻譜的,但是最終matlab 沒有通過編譯,提示錯誤Error using ==> mtimes Out of memory. Type HELP MEMORY for your options.好像是超出內存限制。所以只能直接作出抽樣后信號的頻譜。再利用書上的公式作出重建的Sa(t)信號再求絕對誤差,但是出現了在t=10處絕對誤差突然增大的現象,調整dt 與Ts 的值后t=10處的絕對誤差依然很大,這一點暫時沒有解決。
四、問題與思考
(1)由于抽樣間隔改為2.5,對比例2可以發現w s 明顯變小,容易產生頻譜混疊,而且低通濾波器的截止頻率不滿足w m
總結
以上是生活随笔為你收集整理的matlab信号频率分析实验报告,信号抽样实验报告的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 苹果设备型号代码 device mode
- 下一篇: 机器学习NLP领域入门