我有一些具有直流偏移的数据,并且可能会有轻微的斜率。信号是两个主要峰值(类似于高斯),随后是衰减振荡。
我尝试了以下代码,但这并没有消除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

要删除DC,您只需输入:
inputData_DCRemoved = inputData - mean(inputData);
Run Code Online (Sandbox Code Playgroud)