[英]How to save dynamic variable from workspace in a separate file in matlab?
[英]Matlab: How to save multiple variable points from mouse click (with 'ButtonDownFcn') from a plot into the workspace?
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
任何幫助都感激不盡! 謝謝!
一個簡單的解決方法是首先檢查在基礎工作區中是否已經找到了索引。 如果已經有一個變量IndInWorkSpace
, append 給它,否則分配一個新變量。
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.