使用高通fft滤波器消除DC偏移

Mat*_*ech 1 matlab fft filter

我有一些具有直流偏移的数据,并且可能会有轻微的斜率。信号是两个主要峰值(类似于高斯),随后是衰减振荡。

我尝试了以下代码,但这并没有消除DC偏移-而是消除了弯曲偏移(窦?)。

function [ filteredData ] = fourierFilter( inputData )

factor = 8;
N = 1024*factor;
dataRaw = zeros([1 N]);
dataStart = N/2 - round(size(inputData,2)/2);
indices = dataStart:(dataStart+size(inputData,2))-1;
dataRaw(indices) = inputData;

% transform to fourierspace
fourierSpectrum = (fftshift(fft(dataRaw)));

% add filter
delta = 1*factor/4;
indicesfftfilter = N/2-delta:N/2+delta;
fourierSpectrum(indicesfftfilter) = 0;

% back transform
filteredData = real(ifft(ifftshift(fourierSpectrum)));
filteredData = (filteredData(indices));
Run Code Online (Sandbox Code Playgroud)

此处的数据示例(蓝色)和过滤后的曲线(红色)具有 delta = 3*factor/4

在此处输入图片说明

fat*_*ihk 5

要删除DC,您只需输入:

inputData_DCRemoved = inputData - mean(inputData);
Run Code Online (Sandbox Code Playgroud)