MATLAB有關數字訊號處理的一些方法

2021-06-27 06:46:38 字數 4706 閱讀 5418

產生方波

clear

t=0:0.01:10;

subplot(4,1,1)

f1=square(t);                      %  產生週期為2pi的方波訊號

plot(t,f1)

axis([0,10,-1.2,1.2])

subplot(4,1,2)

f2=square(t,30);              %  產生週期為2pi,占空比為30%的方波訊號  

plot(t,f2)

axis([0,10,-1.2,1.2])

subplot(4,1,3)

f3=square(2*pi*t);                %  產生週期為1的方波訊號

plot(t,f3)

axis([0,10,-1.2,1.2])

subplot(4,1,4)

f4=square(2*pi*t,80);             %  產生週期為1,占空比為80%的矩形脈衝訊號

plot(t,f4)

axis([0,10,-1.2,1.2])

產生三角波,鋸齒波

clear

t=0:0.01:15;

subplot(3,1,1)

f1=sawtooth(t);

plot(t,f1)

axis([0,15,-1.2,1.2])

subplot(3,1,2)

f1=sawtooth(pi*t);

plot(t,f1)

axis([0,15,-1.2,1.2])

subplot(3,1,3)

f1=sawtooth(2*pi*t,0.5);

plot(t,f1)

axis([0,15,-1.2,1.2])

angle-

相位角求取 用法

p=angle(z) 

函式返回向量z的相位角p,單位是弧度,若元素向量或陣列z為複數,則相位角位於-pi到+pi之間。

besselap-besself

低通模擬濾波器 用法

[z,p,k]=besselap(n) 

函式返回n階低通模擬besself濾波器的零點z,極點p和增益k。其中,n《=25,且p的長度為n,k為標量,z是乙個空矩陣。

傳遞函式:

低通模擬濾波器 用法

[z,p,k]=buttap(n) 

函式返回 n階低通模擬butterworth濾波器的零點z,極點p和增益k。其中,p的長度為n,k為標量, z是乙個空矩陣。

cheb1ap-

切比雪夫

1型低通模擬濾波器 用法

[z,p,k]=cheb1ap(n,rp) 

函式返回n階切比雪夫1型低通濾波器的零點z,極點p和增益k。其中,p的長度為n,k為標量,z是乙個空矩陣。rp指定通帶上允許的波紋型別(單位是db)。

cheb2ap-

切比雪夫

2型低通模擬濾波器 用法

[z,p,k]=cheb2ap(n,rs) 

函式返回 n階切比雪夫2型低通模擬濾波器的零點z,極點p和增益k。其中, z和p的長度為n,若n為奇數,則z的長度為n-1,k為標量。rs指定阻帶上允許的波紋型別(單位是db)

時域分析

conv-計算卷積

w=conv(u,v) 

函式計算兩個訊號向量u和v的卷積。其中u的長度為m,v的長度為n,則返回計算結果w長度為(m+n+1)。

cov-計算協方差

1.r=cov(x) 

函式返回訊號x的協方差矩陣r。x可為向量或矩陣。當x為向量時,cov(x)返回乙個包含方差的標量r。當x為矩陣時,cov(x)返回協方差矩陣。

2.r=cov(x,y) 

函式求訊號x和y之間的協方差。

生成乙個隨機矩陣,然後計算該隨機矩陣x的協方差矩陣。

fft/ifft-

快速傅利葉變換

/反變換

1.y=fft(x)/y=ifft(x) 

函式按照基2的演算法對x進行快速傅利葉變換/反變換。若x是乙個矩陣,則對矩陣的每列進行快速傅利葉變換/反變換,返回y是和x相同大小的矩陣。若x是乙個多維序列,則對第乙個非單獨維進行快速傅利葉變換/反變換。

2.y=fft(x,n)/y=ifft(x,n) 

函式對x進行n點快速傅利葉變換/反變換。當x是乙個向量,若x的長度小於n,則先對x進行補零使其長度為n;若x的長度大於n,則對x進行剪下使其長度為n,最後得到乙個長度為n的向量y。當x是乙個矩陣,則利用同樣方法對矩陣的每一列進行調整,然後對矩陣的每列進行快速傅利葉變換/反變換,最後得到乙個n行的矩陣y。

3.y=fft(x,n,dim)/y=ifft(x,n,dim) 

用法同上,dim用來指定進行快速離散傅利葉變換/反變換的維數。

訊號sig中含有正弦訊號和雜訊訊號,對其進行快速離散傅利葉變換。並求出原始訊號頻率成分。

>> t=0:0.005:1;

>> x=sin(2*pi*20*t)+cos(2*pi*60*t);

>> sig=x+rand(1,length(t));

>> subplot(1,2,1);

>> plot(sig(1:60));

>> title('原始訊號圖');

>> ftt_sig=fft(sig,512); %對sig訊號進行補零的512點快速離散傅利葉變換

>> p=ftt_sig.*conj(ftt_sig)/512; %求訊號的功率譜密度

>> f=1000*(0:255)/512; %設定頻率的變換範圍

>> subplot(1,2,2);

>> plot(f,ftt_sig(1:256)) %繪製功率譜密度分布圖

>> title('功率譜密度圖')

fftfilt-

基於fft

額fir濾波

用法y=fftfilt(b,x) 

函式使用疊加法進行基於fft的fir濾波。給定係數向量 b對輸入向量x進行濾波。

y=fftfilt(b,x,n) 

函式使用疊加法進行基於fft的fir濾波。給定係數向量b對輸入向量x進行濾波。n用於決定fft的長度。

filtfilt-

零相位數字濾波 用法

y=filtfilt(b,a,x) 

函式對輸入訊號 x進行正向和反向處理從而實現零相位數字濾波。b和a指定傳遞函式的係數, x是輸入訊號。函式對x進行前向濾波後,再將結果進行反向。

hilbert-

希爾伯特變換

x=hilbert(xr) 

函式將實序列xr進行希爾伯特變換,返回乙個同樣長度的複數序列x。若xr是乙個矩陣,則對xr矩陣的每列進行希爾伯特變換。

x=hibert(xr,n)

函式將實序列xr進行n點希爾伯特變換,返回乙個同樣長度的複數序列x。對xr進行補零或者去零的操作使其長度為 n。

impinvar-

用衝擊響應不變法使模擬濾波器轉換為數字濾波器 用法

[bz,az]=impinvar(b,a,fs)

函式在保持衝擊響應不變的前提下,將模擬濾波器的傳遞函式的分子分母b和a轉換為數字濾波器的傳遞函式的分子分母bz和az。fs為對模擬濾波器的取樣頻率,預設為1hz。

[bz,az]=impinvar(b,a,fs,tol)

方法同上,tol為指定的公差,tol越大,則impinvar函式接近極點的可能性越大,預設為極點值的0.001。

residuez-z

反變換

用法[r,p,k]=residuez(b,a)

函式對有理z函式進行z反變換。b和a分別為有理z函式的分子多項式係數向量和分母多項式係數向量。返回r為留數列向量,p為極點列向量,若分子多項式的階數大於分母多項式的階數,則k為展開式中的直接項。

訊號產生

ones-產生單位階躍訊號

signal=ones(1,n)

函式產生一組n點單位階躍訊號signal,長度為n,訊號幅值為1。

生成乙個長度為5的單位階躍訊號,訊號幅值為1。

signal=ones(1,5)

zeros-產生單位抽樣訊號

signal=[1,zeros(1,n-1)] 函式產生一組單位抽樣訊號signal。

1.生成一組長度為5的單位抽樣訊號

signal=[1,zeros(1,5-1)]

2.生成乙個長度為5的單位抽樣訊號,它在時間軸上延遲2個週期。

x=zeros(1,5)    x(2)=1

sawtooth-生成鋸齒波/三角波訊號

1.sawtooth(t) 函式對時間變數t產生週期為2pi的鋸齒波,幅值在+1到-1間變化。

2.sawtooth(t,width) 函式對時間變數t產生三角波,width是在0到1之間取值的尺度引數,指定鋸齒波的波峰出現的位置。函式在[0,width*2*pi]區間內由-1增大到+1,在[width*2*pi,1]區間內由+1減小到-1。

width=1時,產生正極性鋸齒波,width=0時,產生負極性鋸齒波,width=0.5時,產生對稱鋸齒波。

square-生成方波訊號

1.x=square(t) 函式對時間變數t產生週期為2pi,幅值為+-1的方波。

2.x=square(t,duty) 函式是對時間變數t產生指定週期,幅值為+-1的方波。duty是訊號為正值的區域在乙個週期內所佔的比例。

matlab數字訊號處理常用函式

1 tf b,a 根據微分方程求轉移函式 a,b為分子分母多項式係數或者說微分方程左邊右邊的係數 2 tfestimate txy,f tfestimate x,y,window,noverlap,nfft,fs 根據輸入輸出,估計頻率響應函式 3 lsim sys,u,t 根據輸入u 和響應函式s...

數字訊號處理

1.乙個切比雪夫i型模擬帶阻濾波器用下面的指標設計 通帶截止頻率為 和 阻帶截止頻率為 和 峰值通帶紋波是 最小阻帶衰減為 相應的模擬低通濾波器的頻帶截止頻率和階次是多少?帶阻濾波器的階次是多少?用matlab函式cheblord來驗證濾波器階次結果 寫出程式關鍵步驟 matlab驗證 n 3 fs...

數字訊號處理

一 訊號處理的典型過程 1 模擬濾波 x t xa t 觀測訊號經過前置模擬器ha s 去掉一些帶外成分和干擾 2 取樣 xa t xa nt 以取樣週期t對xa t 進行取樣,得到時域離散訊號xa nt 將時間離散化 3 a d 變換 xa nt x n 把原先訊號幅值連續變換 量化幅值 將幅值離...