1、利用MATLAB產生離散信號函數
1.前言部分code
stem(X,Y):在X的指定點處畫出數據序列Y;blog
stem(X,Y,'filled'):以實心的方式畫出莖稈;im
axis([xmin,xmax,ymin,ymax]):設置當前圖形的座標範圍,分別爲x軸的最小、最大值,y軸的最小、最大值;數據
2.實驗部分
<代碼塊>
莖狀圖
db
k=-2:1:4; x=[2,1,1,-1,3,0,2]; stem(k,x); axis([-3,5,-1.5,3.5])
實心莖狀圖img
k=-2:1:4; x=[2,1,1,-1,3,0,2]; stem(k,x,'filled'); axis([-3,5,-1.1,3.1])
實驗結果圖dba
3.結果分析部分matlab
matlab只能表示一個有限長度的序列,而不能表示無窮大的序列。co
2、利用MATLAB計算系列卷積與相關
1.前言部分
卷積函數:conv
w = conv(u,v): 返回向量 u 和 v 的卷積。若是 u 和 v 是多項式係數的向量,對其卷積與將這兩個多項式相乘等效。
相關函數:xcorr
c = xcorr(x,y):返回矢量長度爲2*N-1互相關函數序列,其中x和y的矢量長度均爲N,若是x和y的長度不同,則在短的序列後補零直到二者長度相等。
2.實驗部分
x=[1,2,3,4]; h=[2,1,3]; y1=conv(x,h) y2=xcorr(x,h) y3=conv(h,x) y4=xcorr(h,x) y5=xcorr(x,x) y6=xcorr(h,h)
輸出結果
y1 =
2 5 11 17 13 12
y2 =
-0.0000 3.0000 7.0000 13.0000 19.0000 10.0000 8.0000
y3 =
2 5 11 17 13 12
y4 =
8.0000 10.0000 19.0000 13.0000 7.0000 3.0000 -0.0000
y5 =
4.0000 11.0000 20.0000 30.0000 20.0000 11.0000 4.0000
y6 =
6 5 14 5 6
3.結果分析部分
從數字信號處理的角度方面來看,自相關運算能夠用卷積運算來代替;在此我就不擺複雜公式了,簡單的列舉幾個結論;
自相關函數:r[-n]=r[n] 偶對稱序列,關於x=0對稱;能夠用xcorr[-n]=xcorr[n]表示;如實驗結果y5,y6;
r[n]在n=0處的數值最大;如實驗結果y5,y6中30.0000、14分別爲其序列中的最大值;
互相關函數xcorr[X,Y]=-xcorr[Y,X],可見xcorr[X,Y]與xcorr[Y,X]互爲其翻轉序列;如實驗結果y4,y6;