巴特沃斯濾波與同態濾波

2021-09-09 09:20:25 字數 2860 閱讀 8767

為了處理手機加速度計感測器資料。

function butterworth1d = butterworthfilter( input1d, d_0, n )

%butterworthfilter 此處顯示有關此函式的摘要

% 此處顯示詳細說明

% 1

% h(x) = ---------------------

% 1+[d / d_0]^(2n)

% input1d : 輸入一維訊號

% d_0 : 20

% n : 3

% butterworth1d : 巴特沃斯濾波後的輸出

butterworth1d=fftshift(fft(input1d));

center=floor(length(input1d)/2);

for iter=1:length(input1d)

d=sqrt((iter-center)^2);

h=1/(1+(d/d_0)^(2*n)); % 低通濾波器

% h=1/(1+(d_0/d)^(2*n)); % 高通濾波器

butterworth1d(iter)=h*butterworth1d(iter);

endbutterworth1d=real(ifft(ifftshift(butterworth1d)));

end

function homomorphic1d = homomorphicfilter( input1d, d_0, r, rh, c )

%homomorphicfilter 此處顯示有關此函式的摘要

% 此處顯示詳細說明

%

% h(x) = (rh - r) * (1 - exp(-c * (d.^2 / d_0.^2))) + r

% input1d : 輸入一維訊號

% d_0 : 10

% r : 1

% rh : 2

% c : 4

homomorphic1d=fftshift(fft(input1d));

center=floor(length(input1d)/2);

for iter=1:length(input1d)

d=sqrt((iter-center)^2);

h=(rh-r)*(1-exp(-c*(d.^2/d_0.^2)))+r;

homomorphic1d(iter)=h*homomorphic1d(iter);

endhomomorphic1d=real(ifft(ifftshift(homomorphic1d)));

end

使用butterworthfilter

clc

clear

% [t,x,y,z]=textread('.\acce_200_1_2.txt','%f%f%f%f', 'delimiter', ','); %#ok

[t,x,y,z]=textread('.\acce_200_100.txt','%f%f%f%f', 'delimiter', ','); %#ok

sample = 1;

windowwidth = 500;

itercount=length(t)-windowwidth+1;

offset=6;

t_sub_windowwidth=t(windowwidth:sample:length(t));

x_sub_windowwidth=x(windowwidth-offset:sample:length(t)-offset);

plot(t_sub_windowwidth, x_sub_windowwidth, 'color', [1 0 0])

hold on

x_butterworth=zeros(itercount, 1);

for i=1:itercount

sub_x=x(i:1:i+windowwidth-1);

sub_x_butterworthfilter=butterworthfilter(sub_x, 30, 1);

x_butterworth(i,1)=sub_x_butterworthfilter(windowwidth-offset);

endplot(t_sub_windowwidth, x_butterworth, 'color', [0 0 0])

% x_butterworth_homomorphic=homomorphicfilter(x_butterworth, 10, 1, 2, 2);

% plot(t_sub_windowwidth,x_butterworth_homomorphic, 'color', [0 0 1])

% all_x_butterworth = butterworthfilter(x_sub_windowwidth, 100, 1);

% plot(t_sub_windowwidth, x_sub_windowwidth, 'color', [0 1 1]);

% plot(t_sub_windowwidth, all_x_butterworth, 'color', [0 0 1]);

效果圖

紅色為原始資料 黑色為濾波後資料

手持手機移動

實驗室採集

matlab 巴特沃斯濾波

低通濾波 fs 30 取樣頻率 n 300 n fs 秒資料 n 0 n 1 t n fs 時間 if 0 fl 0.4 低頻 fh 5 高頻 s cos 2 pi fl t cos 2 pi fh t s是0.4hz和5hz訊號疊加,低通截止頻率是1hz subplot 121 plot t,s ...

matlab實現同態濾波

同態濾波的原理框圖 matlab clear,clc img imread tape.png l size img 計算影象大小 if numel l 2 判斷影象是否是彩色影象 gray rgb2gray img 影象灰度變換 else gray img endgray double gray m...

巴特沃斯濾波器應用場合 巴特沃斯濾波器的特性

butterworth 濾波器屬於低通濾波器的一種,通過低頻訊號而衰減或抑制高頻訊號,在通頻帶內具有最大平坦幅度響應曲線,它在通訊領域裡已有廣泛應用,在電測中也具有廣泛的用途,可以作檢測訊號的。巴特沃斯低通濾波器的平方幅度響應為 其中,n為濾波器的階數,為低通濾波器的截止頻率。該濾波器具有一些特殊的...