我有一個添加了一些垂直線的圖形,如下所示:

figure
x = rand(1,41);
y = 1:41;
H(1)= plot(x,y,'r.');
H(2)= line([x(21) x(21)],[0 max(y)], 'LineWidth', 2, 'Color', 'k');
H(3)= line([x(3) x(3)],[0 max(y)], 'LineWidth', 2, 'Color', 'k');
H(4)= line([x(15) x(15)],[0 max(y)], 'LineWidth', 2, 'Color', 'k');
我希望能夠用滑鼠按鈕點擊線條,并存盤每個點擊的線條索引。以下腳本有效,但我不知道如何將每個索引存盤在陣列中。'IndInWorkSpace' 每次點擊都會發生變化。
set(H, 'ButtonDownFcn', {@LineSelected, H})
function [indices] = LineSelected(ObjectH, H)
set(ObjectH, 'LineWidth', 4);
set(H(H ~= ObjectH), 'LineWidth', 2);
% Get x and y data of the highlighted lines
ind = ObjectH.XData
assignin('base','IndInWorkSpace',ind);
end
任何幫助都感激不盡!謝謝!
uj5u.com熱心網友回復:
一個簡單的解決方法是首先檢查是否已經在基礎作業區中找到了索引。如果已經有一個變數IndInWorkSpace,則附加到它,否則分配一個新變數。
function LineSelected(ObjectH, H)
set(ObjectH, 'LineWidth', 4);
set(H(H ~= ObjectH), 'LineWidth', 2);
% Get x and y data of the highlighted lines
ind = ObjectH.XData;
if evalin('base','exist(''IndInWorkSpace'',''var'')')
indArray = evalin('base','IndInWorkSpace');
indArray(end 1) = ind;
else
indArray = ind;
end
assignin('base', 'IndInWorkSpace', indArray);
end
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/363974.html
