MATLAB有关数字信号处理的一些方法
產(chǎn)生方波
clear
t=0:0.01:10;
subplot(4,1,1)
f1=square(t);?? ??? ?????? ??? ??? %? 產(chǎn)生周期為2pi的方波信號
plot(t,f1)
axis([0,10,-1.2,1.2])
subplot(4,1,2)
f2=square(t,30);?? ??? ?????? %? 產(chǎn)生周期為2pi,占空比為30%的方波信號 ?
plot(t,f2)
axis([0,10,-1.2,1.2])
subplot(4,1,3)
f3=square(2*pi*t); ?? ??? ?????? ?%? 產(chǎn)生周期為1的方波信號
plot(t,f3)
axis([0,10,-1.2,1.2])
subplot(4,1,4)
f4=square(2*pi*t,80);? ??? ?????? %? 產(chǎn)生周期為1,占空比為80%的矩形脈沖信號
plot(t,f4)
axis([0,10,-1.2,1.2])
?
產(chǎn)生三角波,鋸齒波
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)?
函數(shù)返回向量Z的相位角P,單位是弧度,若元素向量或數(shù)組Z為復(fù)數(shù),則相位角位于-pi到+pi之間。
?
besselap-besself低通模擬濾波器
用法
[z,p,k]=besselap(n)?
函數(shù)返回n階低通模擬besself濾波器的零點(diǎn)z,極點(diǎn)p和增益k。其中,n《=25,且p的長度為n,k為標(biāo)量,z是一個(gè)空矩陣。
傳遞函數(shù):
?
buttap-Butterworth低通模擬濾波器
用法
[z,p,k]=buttap(n)?
函數(shù)返回 n階低通模擬Butterworth濾波器的零點(diǎn)z,極點(diǎn)p和增益k。其中,p的長度為n,k為標(biāo)量, z是一個(gè)空矩陣。
?
cheb1ap-切比雪夫1型低通模擬濾波器
用法
[z,p,k]=cheb1ap(n,Rp)?
函數(shù)返回n階切比雪夫1型低通濾波器的零點(diǎn)z,極點(diǎn)p和增益k。其中,p的長度為n,k為標(biāo)量,z是一個(gè)空矩陣。Rp指定通帶上允許的波紋類型(單位是dB)。
?
cheb2ap-切比雪夫2型低通模擬濾波器
用法
[z,p,k]=cheb2ap(n,Rs)?
函數(shù)返回 n階切比雪夫2型低通模擬濾波器的零點(diǎn)z,極點(diǎn)p和增益k。其中, z和p的長度為n,若n為奇數(shù),則z的長度為n-1,k為標(biāo)量。Rs指定阻帶上允許的波紋類型(單位是dB)
?
時(shí)域分析
conv-計(jì)算卷積
w=conv(u,v)?
函數(shù)計(jì)算兩個(gè)信號向量u和v的卷積。其中u的長度為m,v的長度為n,則返回計(jì)算結(jié)果w長度為(m+n+1)。
cov-計(jì)算協(xié)方差
1.R=cov(X)?
函數(shù)返回信號X的協(xié)方差矩陣R。X可為向量或矩陣。當(dāng)X為向量時(shí),cov(X)返回一個(gè)包含方差的標(biāo)量R。當(dāng)X為矩陣時(shí),cov(X)返回協(xié)方差矩陣。
2.R=cov(X,Y)?
函數(shù)求信號X和Y之間的協(xié)方差。
生成一個(gè)隨機(jī)矩陣,然后計(jì)算該隨機(jī)矩陣X的協(xié)方差矩陣。
?
fft/ifft-快速傅立葉變換/反變換
1.Y=fft(X)/Y=ifft(X)?
函數(shù)按照基2的算法對X進(jìn)行快速傅立葉變換/反變換。若X是一個(gè)矩陣,則對矩陣的每列進(jìn)行快速傅立葉變換/反變換,返回Y是和X相同大小的矩陣。若X是一個(gè)多維序列,則對第一個(gè)非單獨(dú)維進(jìn)行快速傅立葉變換/反變換。
2.Y=fft(X,n)/Y=ifft(X,n)?
函數(shù)對X進(jìn)行n點(diǎn)快速傅立葉變換/反變換。當(dāng)X是一個(gè)向量,若X的長度小于n,則先對X進(jìn)行補(bǔ)零使其長度為n;若X的長度大于n,則對X進(jìn)行剪切使其長度為n,最后得到一個(gè)長度為n的向量Y。當(dāng)X是一個(gè)矩陣,則利用同樣方法對矩陣的每一列進(jìn)行調(diào)整,然后對矩陣的每列進(jìn)行快速傅立葉變換/反變換,最后得到一個(gè)n行的矩陣Y。
3.Y=fft(X,n,dim)/Y=ifft(X,n,dim)?
用法同上,dim用來指定進(jìn)行快速離散傅立葉變換/反變換的維數(shù)。
信號sig中含有正弦信號和噪聲信號,對其進(jìn)行快速離散傅立葉變換。并求出原始信號頻率成分。
>> 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信號進(jìn)行補(bǔ)零的512點(diǎn)快速離散傅立葉變換
>> p=ftt_sig.*conj(ftt_sig)/512; %求信號的功率譜密度
>> f=1000*(0:255)/512; %設(shè)置頻率的變換范圍
>> subplot(1,2,2);
>> plot(f,ftt_sig(1:256)) %繪制功率譜密度分布圖
>> title('功率譜密度圖')
?
fftfilt-基于FFT額FIR濾波
用法
y=fftfilt(b,x)?
函數(shù)使用疊加法進(jìn)行基于FFT的FIR濾波。給定系數(shù)向量 b對輸入向量x進(jìn)行濾波。
y=fftfilt(b,x,n)?
函數(shù)使用疊加法進(jìn)行基于FFT的FIR濾波。給定系數(shù)向量b對輸入向量x進(jìn)行濾波。n用于決定FFT的長度。
?
filtfilt-零相位數(shù)字濾波
用法
y=filtfilt(b,a,x)?
函數(shù)對輸入信號 x進(jìn)行正向和反向處理從而實(shí)現(xiàn)零相位數(shù)字濾波。b和a指定傳遞函數(shù)的系數(shù), x是輸入信號。函數(shù)對x進(jìn)行前向?yàn)V波后,再將結(jié)果進(jìn)行反向。
?
hilbert-希爾伯特變換
x=hilbert(xr)?
函數(shù)將實(shí)序列xr進(jìn)行希爾伯特變換,返回一個(gè)同樣長度的復(fù)數(shù)序列x。若xr是一個(gè)矩陣,則對xr矩陣的每列進(jìn)行希爾伯特變換。
x=hibert(xr,n)
函數(shù)將實(shí)序列xr進(jìn)行n點(diǎn)希爾伯特變換,返回一個(gè)同樣長度的復(fù)數(shù)序列x。對xr進(jìn)行補(bǔ)零或者去零的操作使其長度為 n。
?
impinvar-用沖擊響應(yīng)不變法使模擬濾波器轉(zhuǎn)換為數(shù)字濾波器
用法
[bz,az]=impinvar(b,a,fs)
函數(shù)在保持沖擊響應(yīng)不變的前提下,將模擬濾波器的傳遞函數(shù)的分子分母b和a轉(zhuǎn)換為數(shù)字濾波器的傳遞函數(shù)的分子分母bz和az。fs為對模擬濾波器的采樣頻率,缺省為1hz。
[bz,az]=impinvar(b,a,fs,tol)
方法同上,tol為指定的公差,tol越大,則impinvar函數(shù)接近極點(diǎn)的可能性越大,缺省為極點(diǎn)值的0.001。
?
residuez-Z反變換
用法
[r,p,k]=residuez(b,a)
函數(shù)對有理Z函數(shù)進(jìn)行Z反變換。b和a分別為有理Z函數(shù)的分子多項(xiàng)式系數(shù)向量和分母多項(xiàng)式系數(shù)向量。返回r為留數(shù)列向量,p為極點(diǎn)列向量,若分子多項(xiàng)式的階數(shù)大于分母多項(xiàng)式的階數(shù),則k為展開式中的直接項(xiàng)。
?
信號產(chǎn)生
ones-產(chǎn)生單位階躍信號
signal=ones(1,N)
函數(shù)產(chǎn)生一組N點(diǎn)單位階躍信號signal,長度為N,信號幅值為1。
生成一個(gè)長度為5的單位階躍信號,信號幅值為1。
signal=ones(1,5)
?
zeros-產(chǎn)生單位抽樣信號
signal=[1,zeros(1,N-1)] 函數(shù)產(chǎn)生一組單位抽樣信號signal。
1.生成一組長度為5的單位抽樣信號
signal=[1,zeros(1,5-1)]
2.生成一個(gè)長度為5的單位抽樣信號,它在時(shí)間軸上延遲2個(gè)周期。
x=zeros(1,5)????x(2)=1
?
sawtooth-生成鋸齒波/三角波信號
1.sawtooth(t) 函數(shù)對時(shí)間變量t產(chǎn)生周期為2pi的鋸齒波,幅值在+1到-1間變化。
2.sawtooth(t,width) 函數(shù)對時(shí)間變量t產(chǎn)生三角波,width是在0到1之間取值的尺度參數(shù),指定鋸齒波的波峰出現(xiàn)的位置。函數(shù)在[0,width*2*pi]區(qū)間內(nèi)由-1增大到+1,在[width*2*pi,1]區(qū)間內(nèi)由+1減小到-1。
width=1時(shí),產(chǎn)生正極性鋸齒波,width=0時(shí),產(chǎn)生負(fù)極性鋸齒波,width=0.5時(shí),產(chǎn)生對稱鋸齒波。
?
square-生成方波信號
1.x=square(t) 函數(shù)對時(shí)間變量t產(chǎn)生周期為2pi,幅值為+-1的方波。
2.x=square(t,duty) 函數(shù)是對時(shí)間變量t產(chǎn)生指定周期,幅值為+-1的方波。duty是信號為正值的區(qū)域在一個(gè)周期內(nèi)所占的比例。
?
總結(jié)
以上是生活随笔為你收集整理的MATLAB有关数字信号处理的一些方法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数据库70多张表设计的一些思考…
- 下一篇: Matlab 矩阵计算例子