Найти индекс x и y значения в функции графика Matlab
Я пишу настраиваемую функцию графика, которая показывает информацию вместе с точкой данных при ее нажатии. Входные данные для функции - это фигура и массив (того же размера, что и информация), которые содержат информацию, отображаемую вместе с точкой.
Вот что у меня так далеко:
function textPlot( fh, text_v )
dcm=datacursormode(fh);
datacursormode on
set(dcm,'updatefcn',{@myfunction,text_v})
function output_txt = myfunction(obj,event_obj,text_v)
% Display the position of the data cursor
% obj Currently not used (empty)
% event_obj Handle to event object
% output_txt Data cursor text string (string or cell array of strings).
pos = get(event_obj,'Position');
disp(text_v(pos(1)))
output_txt = {['X: ',num2str(pos(1),4)],...
['Y: ',num2str(pos(2),4)]};
% If there is a Z-coordinate in the position, display it as well
if length(pos) > 2
output_txt{end+1} = ['Z: ',num2str(pos(3),4)];
end
Проблема в том, что информация будет отображаться корректно только при наличии одномерного массива. иначе disp(text_v(pos(1)))
будет отображать информацию только из первого столбца.
Короче говоря, есть ли способ получить индекс легенды?
например, если для значений:
0.1 0.2 0.4
0.5 0.7 0.6
0.8 0.9 0.0
и соответствующая текстовая информация:
A B C
D E F
G H I
тогда результирующий график должен иметь три линии, и когда я нажимаю на 0.2
, B
должен отображаться в командном окне
1 ответ
Чтобы отобразить значение в text_v
сначала нужно найти индекс в values
матрица, которая соответствует выбранному значению в pos
,
pos = [..., ...];
disp(text_v(values(:)==pos(2));