實驗二指導書

2021-03-04 06:50:30 字數 5669 閱讀 4570

實驗二離散時間訊號的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冪次或者用添零的方式來...

化工原理實驗4指導書

化工原理 實驗指導書 化學工程系 目錄實驗一流體機械能轉換實驗 1 實驗二離心幫浦特性曲線測定 3 實驗三對流給熱係數測定 9 實驗四篩板精餾塔實驗 13 一 實驗目的 熟悉流動流體中各種能量和壓頭的概念及其互相轉換關係,在此基礎上掌握柏努利方程。二 實驗原理 1.流體在流動時具有三種機械能 即 位...