網站首頁 健康小知識 母嬰教育 起名 運動知識 職場理財 情感生活 綠色生活 遊戲數碼 美容 特色美食 愛好

數字信號處理實驗二MATLAB

欄目: 學習交流 / 發佈於: / 人氣:3.1W

數字信號處理實驗二

一﹑實驗目的:

通過Matlab實現基本信號的表示和運算。理解信號的構成和性質。

二﹑實驗要求與內容:

1.學習使用基本信號在Matlab中的基本表示方法。

2.瞭解本實驗中的擴展函數的結構和組成,實現自己設計的擴展函數的編程。

(1)寫一新的卷積函數conv_m,它可求出帶下標的序列卷積。

3.掌握複雜信號的表示方法;並對複雜信號進行編程實現。

(1)產生下列序列並繪出離散圖。

(a) x(n)=2δ(n+2)-δ(n-4) -5≤n≤5。

(b)x(n)=n[u(n)-u(n-10)]+10a[u(n-10)-u(n-20)]

0≤n≤20。

(c)x(n)=cos(0.04n)=0.2w(n) 0≤n≤50。其中w(n)是均值為零、方差為1的白噪聲序列

4.掌握復序列x(n)的實部﹑虛部﹑幅值和相位離散圖,並編程實現。

產生覆信號:x(n)= -10≤n≤10。並畫出復序列x(n)的實部、虛部、幅值、和相位離散圖。

5.設線性時不變(LTI)系統的單位衝擊響應為h(n)=(0.9)^(n)u(n);輸入序列為x(n)=u(n)-u(n-10);求系統輸出y(n)。

三、實驗步驟

1.先在Matlab中建立保存三個構造函數並保存為.m格式

建立單位採樣序列保存

function[x,n]=impseq(n0,n1,n2)

n=[n1:n2];

x=[(n-n0)>=0];

2.建立單位階躍序列保存

function[x,n]=stepseq(n0,n1,n2)

n=[n1:n2];

x=[(n-n0)==0];

3.編寫新卷積函數conv_m保存。

function[y,yn] =conv_m(x,xn,h,hn)

yn1 = xn(1) +hn(1);

yn2 = xn(length(x)) +hn(length(h));

yn = [yn1:yn2];

y = conv(x,h);

4.對實驗任務進行編程實現。

四、實驗程序及實驗結果

2、(1)

function[y,n]=conv_m[x,n1,h,n2]

y=conv(x,h);

n=(min(n1)+min(n2)):(max(n1)+max(n2))

3、

A)n=[-5:5];

x=2*impseq(-2,-5,5)-impseq(4,-5,5);

subplot(2,2,1);stem(n,x);title('Sequencein Eample 3.a');

B)n=[0:20];

x1=n.*(stepseq(0,0,20)-stepseq(10,0,20));

x2=10*exp(-0.3*(n-10)).*(stepseq(10,0,20)-stepseq(20,0,20));

x=x1+x2;

subplot(2,2,2);stem(n,x);title('Sequencein Eample 3.b');

C)n=[0:50];

f=randn(1,51);

x=cos(0.04*pi.*n)+0.2*f;

subplot(2,2,3);stem(n,x);title('Sequencein Eample 3.c');

數字信號處理實驗二MATLAB

4、n=[-10:10];

x=exp((-0.1+j*0.3)*n);

subplot(2,2,1);

stem(n,real(x));

title('real x');xlabel('n');

subplot(2,2,2);

stem(n,imag(x));

title('imag x');xlabel('n');

subplot(2,2,3);

stem(n,abs(x));

title('abs x');xlabel('n');

subplot(2,2,4);

stem(n,angle(x));

title('angle x');xlabel('n')

數字信號處理實驗二MATLAB 第2張

例題

n=[-5:50];

u1=stepseq(0,-5,50);

u2=stepseq(10,-5,50);

x=u1-u2;

h=((0.9).^n).*u1;

figure(1)

subplot(3,1,1);stem(n,x);axis([-5,50,0,2])

title(' IputSequence ')

ylabel('x(n)')

subplot(3,1,2);stem(n,h);axis([-5,50,0,2])

ylabel('h(n)')

%outputresponse

[y,ny]=conv_m(x,n,h,n);

subplot(3,1,3);stem(ny,y);axis([-5,50,0,8])

gtext('ImpulseResponse')

xlabel('n'),ylabel('y(n)')

數字信號處理實驗二MATLAB 第3張

五、實驗總結

學會了基本信號在Matlab中的基本表示方法,做實驗時注意數字相乘和字母相乘需要加點,同時注意提前定義所有需要的基本擴展函數,做實驗時需要仔細認真,注意中英文的切換問題,不能出現中文空格!