Мне нужно проанализировать много данных, для этого я определил несколько классификаторов данных. Я хочу что-то сделать, если я щелкнул курсором данных в точке на графике, он сохранит точку и вычитает ее из следующего. Чтобы я мог найти максимальную вершину синуса. Как y2-y1.Matlab автоматизирует анализ графиков с использованием datacursormode
Я нашел следующий код для извлечения очков. Только это функция, которая вызывается каждый раз и не имеет памяти.
function out = getIndex(obj,event_obj,X,Y)
pos = event_obj.Position;
d1 = (X-pos(1)).^2 + (Y-pos(2)).^2;
[ignore index] = min(d1);
out = {sprintf('X: %f',pos(1)),...
sprintf('Y: %f',pos(2)),...
sprintf('Index: %d',index)};
% disp(pos(1))
% pos(1)
pos(2)
save pos.mat pos
В Matlab вы можете проверить с:
X = 1:10;
Y = rand(1,10);
plot(X, Y)
Вы можете применить вышеуказанную функцию, которая будет использоваться с datacursormode с помощью:
dcm = datacursormode(gcf);
set(dcm, 'UpdateFcn', @(x,y)getIndex(x,y,X,Y))
Спасибо! (извините за многие изменения, форматирование кода не работает каким-то образом ...) – user408041
Поскольку я не мог отформатировать какой-либо код в ответе, мне как-то пришлось сделать из него новый вопрос. См. здесь: http: /stackoverflow.com/q/8702342/408041 – user408041