Здесь я пропущу всю часть РУКОВОДСТВА, т. Е. Перенесу полученное значение в какое-либо текстовое поле, и сосредоточусь на том, как извлечь нужные данные.
Есть функция ginput
в MATLAB, который вы можете использовать для захвата x, y
координат курсора мыши в пределах фигур MATLAB. Итак, теперь идея состоит в том, чтобы захватить x, y
координаты, щелкнув внутри диаграммы рассеяния, установить некоторый допуск (например, 0.1
) и найти совпадающие x, y
координаты в S.a
и S.b
в пределах этого допуска.
Я собрал следующий пример кода:
% Set up proper struct
S.a = {'First Point', 'Point #2', 'Point No. 3'};
S.b = [3.0, 5.2, 8.5];
S.c = [1.1, 0.4, 2.1]
% Show figure
hFig = figure;
scatter(S.b, S.c);
xlim([0 10]);
ylim([0 3]);
text(0.6, 2.7, 'Press ESC to exit', 'FontSize', 16);
while (true)
% Get x, y coordinates and possibly pressed button
[x, y, button] = ginput(1);
% If ESC button was pressed, exit loop
if (button == 27)
break;
end
% Display x, y coordinates
fprintf('x: %f, y: %f\n', x, y);
% Find matching point within a certain tolerance
idx = find((abs(S.b - x) <= 0.1) & (abs(S.c - y) <= 0.1));
% If an index was found, display description
if (~isempty(idx))
fprintf('Matching point: %s\n-----------------------------\n', S.a{idx});
else
fprintf('No matching point\n------------------------------\n');
end
end
Для целей визуализации это бесконечный цикл, фиксирующий координаты x, y
один раз за итерацию. Поскольку вы можете использовать ginput
также для определения возможных нажатых клавиш, условием выхода является нажатие клавиши ESC. Остальное - это описанное выше нахождение возможных совпадающих координат из S.a
и S.b
и некоторое форматирование вывода.
После загрузки рисунка некоторые щелчки внутри диаграммы рассеяния дают, например:
x: 2.769585, y: 1.109754
No matching point
------------------------------
x: 3.023041, y: 1.100948
Matching point: First Point
-----------------------------
x: 6.317972, y: 1.189010
No matching point
------------------------------
x: 5.211982, y: 0.414066
Matching point: Point #2
-----------------------------
x: 8.529954, y: 2.113658
Matching point: Point No. 3
-----------------------------
Возможно найденное значение S.a{idx}
теперь просто нужно отправить в желаемое текстовое поле.
Надеюсь, это поможет!