該函式主要作用是,對同一段訊號,用兩種不同的濾波器進行濾波處理,然後比較兩者在頻域的結果。通過比較,可以選擇合適的濾波器。這個函式中是對butter和fir兩種進行了比較,讀者要是想對比其他濾波器,或者同時比較三種及以上濾波器,只需要對**稍加修改,就可以滿足需求,這裡不加贅述。
還有一點,讀者要是想輸出不同濾波器的結果,只需將下述函式的第一行修改為:
function [filter1,filter2] = myfilter(signal, fs)
即可
function myfilter(signal, fs)
%signal----原始訊號
%filter1---使用butter濾波器的濾波結果
%filter2---使用fir1濾波器的濾波結果
[b,a] = butter(5,[0.5*2/fs 40*2/fs],'bandpass'); %建立butter帶通濾波器
filter1 = filtfilt(b,a,signal); %利用已建立濾波器進行濾波
nfft1 = length(filter1); %進行fft的訊號長度
frequency1 = fs*(0:nfft1-1)/nfft1; %頻率
filter1_fft = abs(fft(filter1,nfft1)); %fft結果
[b1,a1] = fir1(20,[0.5*2/fs 45*2/fs],'bandpass'); %建立butter帶通濾波器
filter2 = filtfilt(b1,a1,signal); %利用已建立濾波器進行濾波
nfft2 = length(filter2); %進行fft的訊號長度
frequency2 = fs*(0:nfft2-1)/nfft2; %頻率
filter2_fft = abs(fft(filter2,nfft2)); %fft結果
figure('position',[200,200,500,400],'name','原始訊號與不同濾波器濾波結果對比')
plot(signal,'r'); hold on; plot(filter1,'g'); plot(filter2,'b');
legend('original', 'butter(5階)', 'fir(20階)')
figure('position',[200,200,500,400],'name','不同濾波器濾波後fft結果對比');
plot(frequency1(1:nfft1/2), filter1_fft(1:nfft1/2),'g'); hold on;
plot(frequency2(1:nfft2/2), filter2_fft(1:nfft2/2),'b');
legend('butter(5階)', 'fir(20階)')
三種濾波器
濾波器主要有低通濾波器 高通濾波器和帶通濾波器三種,按照電路工作原理又可分為無源和有源濾波器兩大類。低通濾波器 電感阻止高頻訊號通過而允許低頻訊號通過,電容的特性卻相反。訊號能夠通過電感的濾波器 或者通過電容連線到地的濾波器對於低頻訊號的衰減要比高頻訊號小,稱為低通濾波器。低通濾波器原理很簡單,它就...
濾波器有幾種 四種濾波器之間對比詳解
轉至 如今的濾波器已經廣泛的滲透到來日常的生活中。那麼最常用的四種濾波器是那種呢?它主要分為哪四類?就目前來說,最經典的數字濾波器有巴特沃斯濾波器 切比雪夫濾波器 橢圓濾波器和貝塞爾濾波器。巴特沃斯濾波器的特點是通頻帶內的頻率響應曲線最大限度平坦,沒有起伏,而在阻頻帶則逐漸下降為零。在振幅的對數對角...
四種濾波器對比
按照逼近函式型別劃分,濾波器可分為 1 巴特沃斯濾波器 2 切比雪夫濾波器 3 貝塞爾濾波器 4 橢圓濾波器 巴特沃斯濾波器的特點是通頻帶內的頻率響應曲線最大限度平坦,沒有起伏,而在阻頻帶則逐漸下降為零。切比雪夫濾波器在過渡帶比巴特沃斯濾波器的衰減快,但頻率響應的幅頻特性不如後者平坦。切比雪夫濾波器...