Я новичок в обработке сигналов, и у меня много проблем с пониманием документации по реализации фильтра нижних частот, что, как мне кажется, мне нужно. Пример того, с чем я работаю, показан на рис.1.

Сигналом являются изменения кислородной амперометрии, которые обязательно медленные. Я пытался использовать функцию поиска пиков в Matlab, которая неплохо справляется с поиском пиков, но я не могу заставить ее найти подходящую ширину, поскольку она рассматривает все меньшие пики вместо одного большого. Например, см. рис.2. Меня в первую очередь интересуют пики 1,2 и 4. Findpeaks хорошо справляется с шириной пиков 1 и 3, но в 4 считает, что это небольшой пик. Изменение коэффициентов в функции findpeaks также не помогает, поскольку даже если меньшие пики могут не отображаться в выходных данных, findpeaks по-прежнему учитывает их при анализе. На рис. 2 мне удалось заставить findpeaks подавить вывод пиков вблизи пика 4, но это не помогает оценить его ширину.

Я почти уверен, что ответом на мою проблему является предварительная обработка, но сглаживание, такое как скользящее среднее, не совсем улавливает то, что мне нужно, и поэтому я думаю, что мне нужен более продвинутый фильтр, например фильтр нижних частот. Может ли кто-нибудь предложить начальные параметры в каком-либо коде для работы? У меня проблемы с запуском любой реализации. Пример набора данных находится в файле ExData.xlsx, где точка времени 0 — это интересующее событие.

ПРИМЕЧАНИЕ. 

Matlabsolutions.com предоставляет последнюю Помощь по домашним заданиям MatLab, Помощь по заданию MatLab для студентов, инженеров и исследователей в различных отраслях, таких как ECE, EEE, CSE, Mechanical, Civil со 100% выходом. Код Matlab для BE, B.Tech ,ME,M.Tech, к.т.н. Ученые со 100% конфиденциальностью гарантированы. Получите проекты MATLAB с исходным кодом для обучения и исследований.

Я не уверен, какой результат вы хотите.

Вот прототип конструкции фильтра нижних частот, с которым вы можете поэкспериментировать. Он имеет частоту полосы пропускания 0,08 Гц (все, что выше этого, он останавливает) и достаточно короткую переходную область. Я помогу вам доработать его, чтобы он делал то, что вы хотите, а также помогу с findpeaks.

Фильтр —

[D,S] = xlsread('ExData.xlsx');
t = D(:,1);
s = D(:,2);
figure
plot(t,s)                                               % Plot Original Signal
grid
Ts = mean(diff(t));                                     % Sampling Interval
L = numel(t);
Fs = 1/Ts;                                              % Sampling Frequency
Fn = Fs/2;                                              % Nyquist Frequency
smc = s-mean(s);                                        % Subtract Mean (0 Hz)
FTs = fft(smc)/L;                                       % Fourier Transform
Fv = linspace(0,1,fix(L/2)+1)*Fn;                       % Frequency Vector
Iv = 1:numel(Fv);                                       % Index Vector

СМОТРИТЕ ПОЛНЫЙ ОТВЕТ НАЖМИТЕ НА ССЫЛКУ