實驗二離散時間訊號的matlab實現(表示方法和基本運算)
一、實驗目的
離散時間訊號的表示方法及其基本運算。
二、實驗內容
1. 訊號表示
matlab中的主要資料型別是二維或多維的實矩陣或復矩陣。數字訊號處理過程中所用到的基本資料物件(例如:一維訊號或序列,多通道訊號,二維訊號等等)都可以用矩陣來表示。
matlab一般把普通的一維抽樣資料訊號即抽樣序列表示成向量形式。向量表示為1*n或者n*1的矩陣,其中n為序列中抽樣點的個數。
最簡單的把序列引入matlab的方法是在命令列中輸入乙個元素表。例如
>> x=[4,3,7,-9,1]
x = 4 3 7 -9 1
這樣就構造了乙個表示成行向量的五元素簡單實數序列,當然也可以轉換成列向量形式:
>> x=x'
x = 4
37-91列向量形式常用於表示單通道訊號,因為它很自然的擴充套件到多通道的情況。對多通道的訊號矩陣,矩陣的每一列代表乙個通道,每一行代表乙個抽樣點。
乙個包含x、2x和x/pi的三通道訊號表示如下:
>> y=[x 2*x x/pi]
y = 4.0000 8.0000 1.2732
3.0000 6.0000 0.9549
7.0000 14.0000 2.2282
-9.0000 -18.0000 -2.8648
1.0000 2.0000 0.3183
2. 波形發生器
許多不同的工具箱函式都可以產生波形。其中大部分函式都需要乙個時間向量作為引數。如果選擇1000hz的抽樣頻率產生波形,則適宜的時間向量如下:
>> t=(0:0.001:1)'
這樣就構造了乙個有1001個元素的行向量。該向量表示從0到1秒,以千分之一秒為步長。
1) 單位抽樣序列
δ(n)=1 n=0
0 n≠0
這一串行可用matlab中的zeros函式實現:
>> n=10;
>> x=[1 zeros(1,n-1)]
x = 1 0 0 0 0 0 0 0 0 0
2) 單位階躍訊號
u(n)=1 n≥0
0 n<0
這一串行可用matlab中的ones函式實現
>> x=ones(1,n)
x = 1 1 1 1 1 1 1 1 1 1
3) 隨即序列
matlab提供兩種隨機訊號:
rand(1,n)產生[0,1]上均勻分布的隨機向量。
randn(1,n)產生均值為0,方差為1的高斯隨機序列,即白雜訊序列。
>> rand(1,n)
ans =
columns 1 through 6
0.9501 0.2311 0.6068 0.4860 0.8913 0.7621
columns 7 through 10
0.4565 0.0185 0.8214 0.4447
>> randn(1,n)
ans =
columns 1 through 6
-0.4326 -1.6656 0.1253 0.2877 -1.1465 1.1909
columns 7 through 10
1.1892 -0.0376 0.3273 0.1746
4) 正弦波
sin函式可以產生正弦訊號。例如
>> t=0:0.01*pi:2*pi; x=sin(2*pi*t);
>> t=0:0.01*pi:2*pi;
>> x=sin(2*pi*t);
>> plot(t,x);
>> xlabel('時間t');
>> ylabel('幅值');
5) sinc訊號
sinc(t)=sin(πt)/ πt
matlab實現如下:
>> t=linspace(-5,5);
>> x=sinc(t);
>> plot(t,x);
3. 序列的操作
1) 訊號加
x(n)=x1(n)+x2(n)
matlab實現
x=x1+x2
注意:x1和x2序列應該具有相同的長度,位置對應,才能相加。例
>> x1=[1 2 3];
>> x2=[4 5 6];
>> x1+x2
ans =
5 7 9
2) 訊號乘
matlab實現
>> x1.*x2
ans =
4 10 18
3) 摺疊
y(n)=x(-n);
matlab實現
>> x=[1 2 3];
>> y=fliplr(x)
y = 3 2 1
4) 抽樣和
matlab實現:
>> x=[1 2 3];
>> n1=1;
>> n2=3;
>> y=sum(x(n1:n2))
y = 6
5) 抽樣積
matlab實現:
>> y=prod(x(n1:n2))
y = 6
6) 訊號能量
matlab實現:
>> y=sum(abs(x).^2)
y =14
7) 訊號功率
matlab實現:
>> y=sum(abs(x).^2)/n
y =1.4000
一.表示方法:
1.正弦序列
離散正弦序列的matlab表示與連續訊號類似,只不過是用stem函式而不是用plot函式來畫出序列的波形。下面就是正弦序列的matlab源程式。程式執行結果如圖1.19所示。
%正弦序列實現程式
k=0:39;
fk=sin(pi/6*k);
stem(k,fk)
圖1 正弦序列波形
2.指數序列
離散指數序列的一般形式為,可用matlab中的陣列冪運算(即點冪運算)c*來實現。下面為用matlab編寫繪製離散時間實指數序列波形的函式。
function dszsu(c,a,k1,k2)
%c:指數序列的幅度
%a:指數序列的底數
%k1:繪製序列的起始序號
%k2:繪製序列的終止序號
k=k1:k2;
x=c*(a.^k);
stem(k,x,'filled')
hold on
plot([k1,k2],[0,0])
hold off
利用上述函式,實現實指數波形matlab程式如下(其中值分別為)。
%離散時間實指數序列實現程式
subplot 221;
dszsu(1,5/4,0,20);
xlabel('k');
title('f1[k]');
subplot 222
dszsu(1,3/4,0,20);
xlabel('k');
title('f2[k]');
subplot 223;
dszsu(1,-5/4,0,20);
xlabel('k');
title('f3[k]');
subplot 224;
dszsu(1,-3/4,0,20);
xlabel('k');
title('f4[k]');
程式執行結果如圖2所示。如圖可知,對於離散時間實指數序列,當的絕對值大於1時,序列為隨時間發散的序列,當的絕對值小於1時,序列為隨時間收斂的序列。同時可見,當的值小於零時,其波形在增長或衰減的同時,還交替地改變序列值的符號。
圖2 不同底數的實指數序列
對於離散時間虛指數序列,可用通過呼叫下列繪製虛指數序列時域波形的matlab函式。
function=dxzsu(n1,n2,w)
%n1:繪製波形的虛指數序列的起始時間序號
%n2:繪製波形的虛指數序列的終止時間序號
%w:虛指數序列的角頻率
k=n1:n2;
f=exp(i*w*k);
xr=real(f)
xi=imag(f)
xa=abs(f)
xn=angle(f)
subplot(2,2,1), stem(k,xr,'filled'),title('實部');
subplot(2,2,3), stem(k,xi,'filled'),title('虛部');
subplot(2,2,2), stem(k,xa,'filled'),title('模');
subplot(2,2,4), stem(k,xn,'filled'),title('相角');
利用上述函式,實現虛指數波形matlab程式如下(其中虛指數分別為)
%離散時間虛指數實現程式
figure(1);
dxzsu(0,20,pi/4);
figure(2);
dxzsu(0,20,2);
程式執行結果如圖3所示。由圖可見,只有當虛指數序列的角頻率滿足為有理數時,訊號的實部和虛部和相角都為週期序列,否則為非週期序列。
a)波形b)波形
圖3 虛指數序列波形
對於復指數序列,其一般形式為
可以通過呼叫下面繪製復指數序列時域波形的matlab函式。
function dfzsu(n1,n2,r,w)
%n1:繪製波形的虛指數序列的起始時間序號
%n2:繪製波形的虛指數序列的終止時間序號
%w:虛指數序列的角頻率
%r: 指數序列的底數
k=n1:n2;
f=(r*exp(i*w)).^k;
xr=real(f);
xi=imag(f);
xa=abs(f);
xn=angle(f);
subplot(2,2,1), stem(k,xr,'filled'),title('實部');
subplot(2,2,3), stem(k,xi,'filled'),title('虛部');
subplot(2,2,2), stem(k,xa,'filled'),title('模');
subplot(2,2,4), stem(k,xn,'filled'),title('相角');
利用上述函式,實現復指數序列波形matlab程式如下。
%復指數序列實現程式(r>1)
figure(1);
dfzsu(0,20,1.2,pi/4);
%復指數序列實現程式(0figure(2);
dfzsu(0,20,0.8,pi/4);
%復指數序列實現程式(r=1)
figure(3);
dfzsu(0,20,1,pi/4);
其執行結果如圖4(a)、(b)、(c)所示。如圖可見,當r>1時,復指數序列的實部和虛部分別為幅度按指數增長的正弦序列;當0 實驗專案二水平角觀測 一 實驗目的 掌握測回法觀測水平角的方法 步驟和計算方法。二 實驗裝置 dj6級經緯儀1臺,標桿2根,自備計算器 鉛筆 小刀 記錄 等。三 實驗內容 1 在實驗場地上選一點o,在o點上安置緯儀,a b點分別立標桿。2 盤左 照准左目標a,使用歸零手輪使水平度盤讀數略大於0 讀數... 實驗五 matlab實現dft matlab為計算資料的離散快速傅時葉變換,提供了一系列豐富的數學函式,主要有fft ifft fft2 ifft2和czt等。當所處理的資料的長度為2的冪次時,採用基 2演算法進行計算,計算速度會顯著增加。所以,要盡可能使所要處理的資料長度為2冪次或者用添零的方式來... 化工原理 實驗指導書 化學工程系 目錄實驗一流體機械能轉換實驗 1 實驗二離心幫浦特性曲線測定 3 實驗三對流給熱係數測定 9 實驗四篩板精餾塔實驗 13 一 實驗目的 熟悉流動流體中各種能量和壓頭的概念及其互相轉換關係,在此基礎上掌握柏努利方程。二 實驗原理 1.流體在流動時具有三種機械能 即 位...工程測量實驗二指導
實驗五實驗六指導書
化工原理實驗4指導書