北交大數字訊號處理研究性學習報告

2021-03-04 06:32:03 字數 5362 閱讀 1981

姓名學號 同組成員

指導教師申豔

時間 2023年6月10日星期三

【目的】

(1) 掌握離散訊號和系統時域、頻域和z域分析中的基本方法和概念;

(2) 學會用計算機進行離散訊號和系統時域、頻域和z域分析。

(3) 培養學生自主學習能力,以及發現問題、分析問題和解決問題的能力。

m1-1 已知,,,以抽樣頻率對上述三個訊號進行抽樣,在同一張圖上畫出,和及其抽樣點,對所得結果進行討論。

【題目目的】

1. 掌握抽樣的基本概念;

2. 學會matlab中對訊號抽樣的方法。

【**結果】

【結果分析】

通過**抽樣前後的訊號影象我們可知,g1=cos(6*pi*t),g2=cos(14*pi*t),g3=cos(26*pi*t)雖然它們訊號時域表示式不同,但在以抽樣頻率fm=10hz抽樣後,各離散訊號具有相同的時域表示式,所以當抽樣頻率過小時,所得離散訊號可能存在較大失真,無法反映原訊號的特徵,所以在給定乙個訊號後,我們應給出合適的抽樣頻率,抽樣頻率過小時失真較多,抽樣頻率過大時又造成了浪費,抽樣訊號符合我們給定的要求即可,這樣得到的訊號才能在最大程度保留原訊號的特徵的基礎上節約資源。

【**程式】

k1=0:0.01:2;

k2=0:0.1:2;

g1=cos(6*pi*k1);

g2=cos(6*pi*k2);

subplot(3,2,1);

plot(k1,g1);

axis([0,2,-1.5,1.5]);

title('g1=cos(6*pi*t) 原訊號');

xlabel('t');ylabel('g1(t)');

subplot(3,2,2);

stem(k2,g2);

axis([0,2,-1.5,1.5]);

title('g1=cos(6*pi*t) 抽樣頻率fm=10hz');

xlabel('k');ylabel('g1[k]');

k3=0:0.01:2;

k4=0:0.1:2;

g3=cos(14*pi*k3);

g4=cos(14*pi*k4);

subplot(3,2,3);

plot(k3,g3);

axis([0,2,-1.5,1.5]);

title('g2=cos(14*pi*t) 原訊號');

xlabel('t');ylabel('g2(t)');

subplot(3,2,4);

stem(k4,g4);

axis([0,2,-1.5,1.5]);

title('g2=cos(14*pi*t) 抽樣頻率fm=10hz');

xlabel('k');ylabel('g2[k]');

k5=0:0.001:2;

k6=0:0.1:2;

g5=cos(26*pi*k5);

g6=cos(26*pi*k6);

subplot(3,2,5);

plot(k5,g5);

axis([0,2,-1.5,1.5]);

title('g3=cos(26*pi*t) 原訊號');

xlabel('t');ylabel('g3(t)');

subplot(3,2,6);

stem(k6,g6);

axis([0,2,-1.5,1.5]);

title('g3=cos(26*pi*t) 抽樣頻率fm=10hz');

xlabel('k');ylabel('g3[k]');

m1-2 利用matlab的filter函式,求出下列系統的單位脈衝響應,並判斷系統是否穩定。討論本題所獲得的結果。

【題目目的】

1. 掌握lti系統單位脈衝響應的基本概念、系統穩定性與單位脈衝響應的關係;

2. 學會filter函式的使用方法及用filter函式計算系統單位脈衝響應;

3. 體驗有限字長對系統特性的影響。

【**結果】

下面是兩個系統的單位脈衝響應:

下面是兩個系統的零極點分布圖:

極點1 0.9430 0.9020

極點2 1.0000 0.8500

【結果分析】

根據以上**結果可知,兩個系統函式h1,h2雖然只是分母係數差了一點,但最終實現時系統的單位脈衝響應會出現很大的不同,系統的極點也發生了不小的變化,這就造成了系統的失真。

比如,完成數字濾波器設計後,具體實現時,可能會出現較大的誤差,甚至使設計的穩定系統變成不穩定系統,從而無法達到設計的要求。引起這些誤差的根本原因在於暫存器(儲存單元)的字長有限。誤差的特性與系統的型別、結構形式、數字的表示法、運算方式及字的長短有關。

在通用計算機上,字長較長,量化步很小,量化誤差不大。但在專用硬體,如fpga,實現數字系統時,其字長較短,就必須考慮有限字長效應了。

【問題**】

已知lti系統的系統函式,有哪些計算系統單位脈衝響應方法,比較這些方法的優缺點。

filter函式,可計算出差分方程的零狀態響應,既可以用來求y[k],也可以求出h[k],是最基本的方法,也是最複雜的方法;

impulse函式,只是用來實現衝擊響應的,是最方便的方法;

conv函式,是用來計算卷積的,可以用來求y[k],這種方法也較麻煩,間接求出單位脈衝響應,不能直接求出單位脈衝響應。

【**程式】

b1=[1];

a1=[1,-1.845,0.850586];

b2=[1];

a2=[1,-1.85,0.85];

x=[1,zeros(1,49)];

y1=filter(b1,a1,x);

subplot(2,1,1);

stem(y1);

xlabel('x');

ylabel('h1[k]');

axis([0 50 0 8]);

y2=filter(b2,a2,x);

subplot(2,1,2);

stem(y2);

xlabel('x');

ylabel('h2[k]');

subplot(2,1,1);

[r1,p1,m1]=residuez(b1,a1);

disp('極點1');

disp(p1');

zplane(b1,a1);

title('h1');

subplot(2,1,2);

[r2,p2,m2]=residuez(b2,a2);

disp('極點2');

disp(p2');

zplane(b2,a2);

title('h2');

m1-3 (1)利用matlab語句

x=firls(511,[0 0.4 0.404 1],[1 1 0 0])

產生乙個長度為512的序列x[k],並畫出該序列的幅度頻譜。

(2) 已知序列,分別畫出時序列y[k]的幅度頻譜。解釋所得到的結果。

【題目目的】

1. 學會用matlab函式freqz計算序列頻譜;

2. 掌握序列頻譜的基本特性及分析方法。

【溫磬提示】

只需知道matlab語句

x=firls(511,[0 0.4 0.404 1],[1 1 0 0])

產生乙個長度為512的序列x[k],該序列滿足

不需知道其他細節。用函式freqz計算該序列的頻譜,在畫幅度頻譜時,建議用歸一化頻率。

【**結果】

改進後:

【結果分析】

y[k]=

對訊號進行fourier變換:

所以,y[k]的幅度頻譜是x[k]幅度頻譜左移與右移之和的一半,在平移的過程中,會出現混疊現象,然而這樣的理論分析與實際的結果不同,比如w0=0.8pi時,本來值較高的地方實際的值卻很低,原因如下:在x[k]變化較劇烈的點的值處與cos函式值為零的值相乘後消去,所以將高頻分量丟失,所以頻譜會出現理論與實際結果不同的現象。

所以,是512的偶數倍的點均會出現這種現象,所以可以選擇將x[k]變成3000個點的序列,即可解決這種現象。

【問題**】

有部分的計算結果可能與理論分析的結果不一致,分析出現該現象的原因,給出解決問題方法並進行**實驗。

【**程式】

x=firls(511,[0 0.4 0.404 1],[1 1 0 0]);

b=x;

a=1;

w=linspace(-pi,pi,512);

y=freqz(b,a,w);

subplot(3,2,1:2);

plot(w/pi,abs(y));

axis([-2,2,-1,2]);

title('生成序列x[k]的幅度頻譜');

k=0:511;

y1=x.*cos(0.4*pi*k);

g1=freqz(y1,a,w);

subplot(3,2,3);

plot(w/pi,abs(g1));

xlabel('w0=0.4pi');

ylabel('y[k]=x[k]cos(w0k)的幅度頻譜');

y2=x.*cos(0.8*pi*k);

g2=freqz(y2,a,w);

subplot(3,2,4);

plot(w/pi,abs(g2));

xlabel('w0=0.8pi');

ylabel('y[k]=x[k]cos(w0k)的幅度頻譜');

y3=x.*cos(0.9*pi*k);

g3=freqz(y3,a,w);

subplot(3,2,5);

plot(w/pi,abs(g3));

xlabel('w0=0.9pi');

ylabel('y[k]=x[k]cos(w0k)的幅度頻譜');

y4=x.*cos(pi*k);

g4=freqz(y4,a,w);

subplot(3,2,6);

plot(w/pi,abs(g4));

xlabel('w0=pi');

ylabel('y[k]=x[k]cos(w0k)的幅度頻譜');

改進後的程式:

x=firls(2999,[0 0.4 0.404 1],[1 1 0 0]);

b=x;

a=1;

w=linspace(-pi,pi,512);

y=freqz(b,a,w);

subplot(3,2,1);

plot(w/pi,abs(y));

axis([-2,2,-1,2]);

title('生成序列x[k]的幅度頻譜');

k=0:2999;

y1=x.*cos(0.4*pi*k);

subplot(3,2,2);

plot(k,x);

數字訊號處理複習

一 填空題 1 對模擬訊號 一維訊號,是時間的函式 進行取樣後,就是離散訊號,再進行幅度量化後就是數碼訊號。2 若線性時不變系統是有因果性,則該系統的單位取樣響應序列h n 應滿足的充分必要條件是當n 0時,h n 0 3 序列的n點dft是的z變換在單位圓的n點等間隔取樣。4 只有當迴圈卷積長度l...

數字訊號處理實驗

一 實驗目的 研究不同型別的窗函式,研究一些不同的方法來測試窗函式的效能 專注於有關窄帶訊號的幾個不同的情形。二 實驗原理 訊號是無限長的,而在進行訊號處理時只能採用有限長訊號,所以需要將訊號 截斷 在訊號處理中,截斷 被看成是用乙個有限長的 視窗 看無限長的訊號,或者從分析的角度是無限長的訊號x ...

數碼訊號與處理

姓名 李智鵬 學號 091204117 院系 電氣與電子工程學院 指導老師 方焯 2018 9 23 離散時間訊號與系統 一 一 實驗內容 計算一全通系統 z 1 0.5 1 0.5z 1 的單位取樣響應h n 矩形序列r5 n 的響應 比較該響應與r5 n h n 的結果.2 實驗原理 將單位取樣...