數字訊號處理實驗一(離散時間訊號的MATLAB實現)
1.正弦序列
離散正弦序列的MATLAB表示與連續訊號類似,只不過是用stem函式而不是用plot函式來畫出序列的波形。下面就是正弦序列的MATLAB源程式。
%正弦序列實現程式
k=0:39;
fk=sin(pi/6*k);
stem(k,fk)
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]');
分析程式執行結果,對於離散時間實指數序列,當的絕對值大於1時,序列為隨時間發散的序列,當的絕對值小於1時,序列為隨時間收斂的序列。同時可見,當的值小於零時,其波形在增長或衰減的同時,還交替地改變序列值的符號。
對於離散時間虛指數序列,可用通過呼叫下列繪製虛指數序列時域波形的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);
程式執行結果如圖1.21(a)、(b)所示。由圖可見,只有當虛指數序列的角頻率滿足為有理數時,訊號的實部和虛部和相角都為週期序列,否則為非週期序列。
對於復指數序列,其一般形式為
可以通過呼叫下面繪製復指數序列時域波形的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);
%復指數序列實現程式(0<r<1)
figure(2);
dfzsu(0,20,0.8,pi/4);
%復指數序列實現程式(r=1)
figure(3);
dfzsu(0,20,1,pi/4);
當r>1時,復指數序列的實部和虛部分別為幅度按指數增長的正弦序列;當0<r<1時,復指數序列的實部和虛部分別為幅度按指數衰減的正弦序列;當r=1時,復指數序列的實部和虛部分別為等幅正弦序列。
3.單位抽樣序列
可以通過藉助MATLAB中的零矩陣函式zeros表示。全零矩陣zeros(1,N)產生一個由N個零組成的列向量,對於有限區間的可以通過以下MATLAB程式表示
% 單位抽樣序列實現程式
k=-30:30;
delta=[zeros(1,30),1,zeros(1,30)];
stem(k,delta)
4.單位階躍序列
可以通過藉助MATLAB中的單位矩陣函式ones表示。單位矩陣ones(1,N)產生一個由N個1組成的列向量,對於有限區間的可以通過以下MATLAB程式表示
% 單位階躍序列實現程式
k=-30:30;
uk=[zeros(1,30),ones(1,31)];
stem(k,uk)
相關文章
- 數字訊號模擬實驗——實驗一離散時間訊號與系統的時域分析
- 數字訊號處理實驗(四):數字濾波器結構
- MATLAB訊號處理——數字濾波器的設計Matlab
- MATLAB及其訊號處理基礎Matlab
- MATLAB數字訊號處理(2)LFM脈衝雷達回波處理模擬Matlab
- Python中使用共享變數+訊號量實現程序間的實時通訊Python變數
- FPGA數字訊號處理(十三)鎖相環位同步技術的實現FPGA
- 訊號處理基本引數
- 語音訊號預處理——數字濾波器音訊
- MATLAB數字訊號處理(1)四種經典功率譜估計方法比較Matlab
- MATLAB音訊訊號處理(一):函式簡易用法(audioread,sound函式)Matlab音訊函式
- 數字訊號處理:運用FFT簡單濾波FFT
- FPGA數字訊號處理(22)FSK調製技術FPGA
- 處理python中的訊號Python
- linux 訊號與處理Linux
- 數字訊號處理基礎----插值、抽取濾波器
- 通訊訊號處理的一些基本常識
- 小波變換檢測訊號突變點的MATLAB實現Matlab
- 訊號處理技術:現代通訊技術的基石
- Linux中訊號量的實現Linux
- Python 音訊訊號處理庫 librosaPython音訊ROS
- 訊號課組(一) 訊號與系統 Part 0 MATLAB在訊號與系統中的使用Matlab
- 【scipy 基礎】--訊號處理
- 訊號處理第二篇——接著談正弦訊號
- FPGA數字訊號處理(24)數字相關器設計(簡化結構)FPGA
- FPGA數字訊號處理(25)數字相關器設計(經典結構)FPGA
- 網頁js版音訊數字訊號處理:H5錄音+特定頻率訊號的特徵分析和識別提取網頁JS音訊H5特徵
- linux中的訊號處理與SROPLinux
- Semaphore-訊號量的實現分析
- Linux 下的程式間通訊:套接字和訊號Linux
- xenomai核心解析之訊號signal(二)---xenomai訊號處理機制AI
- Python語音訊號處理的一些kitPython音訊
- 離散傅立葉變換的衍生,負頻率、fftshift、實訊號、共軛對稱FFT
- 語音訊號處理入門系列(2)——訊號處理中的幾個關鍵概念音訊
- 實驗六 連續訊號的頻域分析
- 作業系統實驗6之訊號量的實現與應用作業系統
- FPGA數字訊號處理(26)加擾器與解擾器設計FPGA
- GNU Radio 實數與複數訊號分析
- 程序間的通訊(訊號通訊)