더 높은 주파수를 제거하는 필터를 구현하고 싶습니다. 이 예제에서는 죄 곡선을 제거하고 선형 곡선을 유지하려고합니다.은 저 대역 통과 필터를 구현했습니다.
EDIT 그러나 I 필터링 구현 함수가 수용하지 않은 상당한 데이터의 에지 변화
제가 정정 코드.
clc; clear all;
xaxis = linspace(1, 10, 1000);
data = xaxis + sin(xaxis*3);
Nf = 2^12;
xAxisf = linspace(-10,10,Nf);
% plot(xaxis, data);
% FFT
xsize = numel(data);
Xf = zeros([1 Nf]);
indices = Nf/2-floor(xsize/2):Nf/2-floor(xsize/2)+xsize - 1;
Xf(indices) = data;
% Xf = fftshift(Xf);
Xf = fft(Xf);
Xf = fftshift(Xf);
% plot
Xfa = abs(Xf); plot(xAxisf, Xfa);
% generate super-gaussian filter function
Nf = numel(Xf);
widthfilter = 0.12;
filterpower = 2;
filter = exp(-(xAxisf.^2./widthfilter^2).^filterpower);
% filter
filtertimes = 20;
Xf = Xf .* filter.^filtertimes;
% plot
Xfa = abs(Xf); plot(Xfa);
% iFFt
Xfs = ifftshift(Xf);
Xif = ifft(Xfs);
% Xif = ifftshift(Xif);
result = abs(Xif);
plot(result(indices))
역 변환을하기 전에 abs를 사용했기 때문에. –
당신 말이 맞아요. 복근은 필요한 음모에 대해서만 사용되었습니다. 그러나 필터링은 현재 작동하지 않습니다. –