Я использую КИХ-фильтр в MATLAB для фильтрации сигнала. На рисунке ниже, применяя мой фильтр к началу участка создает нижний участок:Фильтр нижних частот в MATLAB - добавляет данные в начало вектора
Эффект это имеет, успешно низкочастотную фильтрацию данных, но переложить все вместе на 500 мс.
Вот процедура я использую фильтр низких частот данные:
% (Start with any vector called 'inputData')
samplingRate = 1000;
filterLength = 1000;
filterCutOff = 90;
filterType = fir1(filterLength , filterCutOff/(samplingRate/2), 'low'); % define the low pass filter
inputData = filter(filterType,1,inputData); % filter the data
Я знаю, что 500 мс сдвиг моих данных относится к половине длины фильтра (1000мс), но почему это случается, и я делаю что-то принципиально неправильное? Я знаю, что мог бы просто удалить первые 500 мс отфильтрованных данных, но я также пропускаю последние 500 мс данных.
Обратите внимание, что для этого примера требуется набор инструментов обработки сигналов .
Если вам не нужна задержка, вам нужно будет использовать фазу задержки фильтра фильтра IIR (filterfilt). Вы не можете получить FIR без задержки. То есть вам нужно будет выбрать фильтр, который лучше всего подходит для вашей ситуации ... – Werner
@Werner, спасибо за это. Если вы добавите это как ответ, я могу принять его как правильно. – CaptainProg
Там вы, добавили книгу, которую я использовал, но, конечно, книг много. – Werner