[轉(zhuǎn)載]分享matlab程序之——濾波器篇(高通,低通)

2017-01-15  by:CAE仿真在線(xiàn)  來(lái)源:互聯(lián)網(wǎng)

作者:殘翅天使

快畢業(yè)了,把自己寫(xiě)的現(xiàn)成的matlab函數(shù)分享給有需要的人,由于個(gè)人水平有限,寫(xiě)的不好請(qǐng)見(jiàn)諒,愿意拍磚的盡管拍好了。目前還不考慮讀博,所以寫(xiě)的程序仍了可惜,所以就拿出來(lái)分享。好了不廢話(huà)了,開(kāi)始正題。


以下兩個(gè)濾波器都是切比雪夫I型數(shù)字濾波器,不是巴特沃爾濾波器,請(qǐng)使用者注意!

1.低通濾波器

使用說(shuō)明:將下列代碼幅值然后以m文件保存,文件名要與函數(shù)名相同,這里函數(shù)名:lowp。

function y=lowp(x,f1,f3,rp,rs,Fs)
%低通濾波
%使用注意事項(xiàng):通帶或阻帶的截止頻率的選取范圍是不能超過(guò)采樣率的一半
%即,f1,f3的值都要小于 Fs/2
%x:需要帶通濾波的序列
% f 1:通帶截止頻率
% f 3:阻帶截止頻率
%rp:邊帶區(qū)衰減DB數(shù)設(shè)置
%rs:截止區(qū)衰減DB數(shù)設(shè)置
%FS:序列x的采樣頻率
% rp=0.1;rs=30;%通帶邊衰減DB值和阻帶邊衰減DB值
% Fs=2000;%采樣率
%
wp=2*pi*f1/Fs;
ws=2*pi*f3/Fs;
% 設(shè)計(jì)切比雪夫?yàn)V波器;
[n,wn]=cheb1ord(wp/pi,ws/pi,rp,rs);
[bz1,az1]=cheby1(n,rp,wp/pi);
%查看設(shè)計(jì)濾波器的曲線(xiàn)
[h,w]=freqz(bz1,az1,256,Fs);
h=20*log10(abs(h));
figure;plot(w,h);title('所設(shè)計(jì)濾波器的通帶曲線(xiàn)');grid on;
%
y=filter(bz1,az1,x);%對(duì)序列x濾波后得到的序列y
end

--------------------------------------

低通濾波器使用例子的代碼

fs=2000;
t=(1:fs)/fs;
ff1=100;
ff2=400;
x=sin(2*pi*ff1*t)+sin(2*pi*ff2*t);
figure;
subplot(211);plot(t,x);
subplot(212);hua_fft(x,fs,1);
%低通測(cè)試
% y=filter(bz1,az1,x);
y=lowp(x,300,350,0.1,20,fs);
figure;
subplot(211);plot(t,y);
subplot(212);hua_fft(y,fs,1);%hua_fft()函數(shù)是畫(huà)頻譜圖的函數(shù),代碼在下面給出,要保存為m文件調(diào)用

%這段例子還調(diào)用了我自己寫(xiě)的專(zhuān)門(mén)畫(huà)頻譜圖的函數(shù),也給出,不然得不出我的結(jié)果

%畫(huà)信號(hào)的幅頻譜和功率譜
%頻譜使用matlab例子表示
function hua_fft(y,fs,style,varargin)
%當(dāng)style=1,畫(huà)幅值譜;當(dāng)style=2,畫(huà)功率譜;當(dāng)style=其他的,那么花幅值譜和功率譜
%當(dāng)style=1時(shí),還可以多輸入2個(gè)可選參數(shù)
%可選輸入?yún)?shù)是用來(lái)控制需要查看的頻率段的
%第一個(gè)是需要查看的頻率段起點(diǎn)
%第二個(gè)是需要查看的頻率段的終點(diǎn)
%其他style不具備可選輸入?yún)?shù),如果輸入發(fā)生位置錯(cuò)誤
nfft= 2^nextpow2(length(y));%找出大于y的個(gè)數(shù)的最大的2的指數(shù)值(自動(dòng)進(jìn)算最佳FFT步長(zhǎng)nfft)
%nfft=1024;%人為設(shè)置FFT的步長(zhǎng)nfft
y=y-mean(y);%去除直流分量
y_ft=fft(y,nfft);%對(duì)y信號(hào)進(jìn)行DFT,得到頻率的幅值分布
y_p=y_ft.*conj(y_ft)/nfft;%conj()函數(shù)是求y函數(shù)的共軛復(fù)數(shù),實(shí)數(shù)的共軛復(fù)數(shù)是他本身。
y_f=fs*(0:nfft/2-1)/nfft;?T變換后對(duì)應(yīng)的頻率的序列
% y_p=y_ft.*conj(y_ft)/nfft;%conj()函數(shù)是求y函數(shù)的共軛復(fù)數(shù),實(shí)數(shù)的共軛復(fù)數(shù)是他本身。
if style==1
if nargin==3
plot(y_f,2*abs(y_ft(1:nfft/2))/length(y));%matlab的幫助里畫(huà)FFT的方法
%ylabel('幅值');xlabel('頻率');title('信號(hào)幅值譜');
%plot(y_f,abs(y_ft(1:nfft/2)));%論壇上畫(huà)FFT的方法
else
f1=varargin{1};
fn=varargin{2};
ni=round(f1 * nfft/fs+1);
na=round(fn * nfft/fs+1);
plot(y_f(ni:na),abs(y_ft(ni:na)*2/nfft));
end

elseif style==2
plot(y_f,y_p(1:nfft/2));
%ylabel('功率譜密度');xlabel('頻率');title('信號(hào)功率譜');
else
subplot(211);plot(y_f,2*abs(y_ft(1:nfft/2))/length(y));
ylabel('幅值');xlabel('頻率');title('信號(hào)幅值譜');
subplot(212);plot(y_f,y_p(1:nfft/2));
ylabel('功率譜密度');xlabel('頻率');title('信號(hào)功率譜');
end
end

下面三幅圖分別是濾波前的時(shí)頻圖,濾波器的濾波特性曲線(xiàn)圖和濾波后的時(shí)頻圖,通過(guò)圖可以看出成功留下了100Hz的低頻成分而把不要的高頻成分去除了。

[轉(zhuǎn)載]分享matlab程序之——濾波器篇(高通,低通)


[轉(zhuǎn)載]分享matlab程序之——濾波器篇(高通,低通)


[轉(zhuǎn)載]分享matlab程序之——濾波器篇(高通,低通)
2.高通濾波器

function y=highp(x,f1,f3,rp,rs,Fs)
%高通濾波
%使用注意事項(xiàng):通帶或阻帶的截止頻率的選取范圍是不能超過(guò)采樣率的一半
%即,f1,f3的值都要小于 Fs/2
%x:需要帶通濾波的序列
% f 1:通帶截止頻率
% f 2:阻帶截止頻率
%rp:邊帶區(qū)衰減DB數(shù)設(shè)置
%rs:截止區(qū)衰減DB數(shù)設(shè)置
%FS:序列x的采樣頻率
% rp=0.1;rs=30;%通帶邊衰減DB值和阻帶邊衰減DB值
% Fs=2000;%采樣率
%
wp=2*pi*f1/Fs;
ws=2*pi*f3/Fs;
% 設(shè)計(jì)切比雪夫?yàn)V波器;
[n,wn]=cheb1ord(wp/pi,ws/pi,rp,rs);
[bz1,az1]=cheby1(n,rp,wp/pi,'high');

%查看設(shè)計(jì)濾波器的曲線(xiàn)
[h,w]=freqz(bz1,az1,256,Fs);
h=20*log10(abs(h));
figure;plot(w,h);title('所設(shè)計(jì)濾波器的通帶曲線(xiàn)');grid on;
y=filter(bz1,az1,x);
end

下面是高通濾波器的例子

fs=2000;
t=(1:fs)/fs;
ff1=100;
ff2=400;
x=sin(2*pi*ff1*t)+sin(2*pi*ff2*t);
figure;
subplot(211);plot(t,x);
subplot(212);hua_fft(x,fs,1);

%------高通測(cè)試
z=highp(x,350,300,0.1,20,fs);
figure;
subplot(211);plot(t,z);
subplot(212);hua_fft(z,fs,1);

下面三幅圖分別是濾波前的時(shí)頻圖,濾波器的濾波特性曲線(xiàn)圖和濾波后的時(shí)頻圖,通過(guò)圖可以看出成功留下了400Hz的高頻成分而把不要的低頻成分100Hz去除了。

[轉(zhuǎn)載]分享matlab程序之——濾波器篇(高通,低通)


[轉(zhuǎn)載]分享matlab程序之——濾波器篇(高通,低通)




[轉(zhuǎn)載]分享matlab程序之——濾波器篇(高通,低通)


開(kāi)放分享:優(yōu)質(zhì)有限元技術(shù)文章,助你自學(xué)成才

相關(guān)標(biāo)簽搜索:[轉(zhuǎn)載]分享matlab程序之——濾波器篇(高通,低通) HFSS電磁分析培訓(xùn) HFSS培訓(xùn)課程 HFSS技術(shù)教程 HFSS無(wú)線(xiàn)電仿真 HFSS電磁場(chǎng)仿真 HFSS學(xué)習(xí) HFSS視頻教程 天線(xiàn)基礎(chǔ)知識(shí) HFSS代做 天線(xiàn)代做 Fluent、CFX流體分析 HFSS電磁分析 

編輯
在線(xiàn)報(bào)名:
  • 客服在線(xiàn)請(qǐng)直接聯(lián)系我們的客服,您也可以通過(guò)下面的方式進(jìn)行在線(xiàn)報(bào)名,我們會(huì)及時(shí)給您回復(fù)電話(huà),謝謝!
驗(yàn)證碼

全國(guó)服務(wù)熱線(xiàn)

1358-032-9919

廣州公司:
廣州市環(huán)市中路306號(hào)金鷹大廈3800
電話(huà):13580329919
          135-8032-9919
培訓(xùn)QQ咨詢(xún):點(diǎn)擊咨詢(xún) 點(diǎn)擊咨詢(xún)
項(xiàng)目QQ咨詢(xún):點(diǎn)擊咨詢(xún)
email:kf@1cae.com