Как мне работать с данными хроноамперометрии с помощью Matlab? Включая обнаружение outliner и сглаживание данных - PullRequest
0 голосов
/ 26 апреля 2019

Мои экспериментальные данные выглядят примерно так:

Imgur

Он имеет разные этапы, на каждом этапе есть несколько нежелательных точек данных (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)')

Мой вопрос: как сгладить данные такого рода? - Используя какой алгоритм я могу обнаружить аномальные точки данных? Дело в том, что есть несколько отдельных этапов, и каждый этап имеет разные тенденции (не обязательно плоские.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...