Мои экспериментальные данные выглядят примерно так:
![Imgur](https://i.imgur.com/F2lFP6d.png)
Он имеет разные этапы, на каждом этапе есть несколько нежелательных точек данных (outliners).
Это называется тест с хроноамперометрией, результат - график «текущее время». То, что я хочу, это автоматически возвращать правильное число на каждом этапе. Первым шагом является обнаружение и удаление аномальных точек.
То, что я сделал, довольно просто: используйте каждую точку, чтобы вычесть прежние, если разница велика, то это этап.
a=xlsread('s38.xlsx'); %load data
x=a(:,1); % first column
y=a(:,2)*1000000000;
x1=a(2:end,1);
x2=0:2:40;
[m n]=size(a);
for i=1:m-1
y1(i)=y(i+1)-y(i);
end
z=y1';
% for i=1:21
% t(i)=y(1000+450*i);
% end
%figure 1
subplot(2,2,1)
plot(x,y,'k','Marker','o','MarkerSize',2,'MarkerFaceColor','k','MarkerEdgeColor','k')
grid on
xlabel('time(s)')
ylabel('current(nA)')
xlim([1000 m])
subplot(2,2,2)
plot(x1,z,'k','Marker','o','MarkerSize',1,'MarkerFaceColor','k','MarkerEdgeColor','k')
grid on
xlabel('time(mM)')
ylabel('current difference(nA)')
Мой вопрос: как сгладить данные такого рода? - Используя какой алгоритм я могу обнаружить аномальные точки данных? Дело в том, что есть несколько отдельных этапов, и каждый этап имеет разные тенденции (не обязательно плоские.)