[英]How to create a marker on a existing plot on axes1 in Matlab GUIDE?
我一直在嘗試向情節添加標記,但到目前為止我一直失敗。 這是我正在處理的代碼:
v = evalin('base','a matrix in my workspace which is 1000 by 1');
plot(v, 'Parent', handles.axes2);
for frames = 2:handles.frameCount-1
axes(handles.axes1);
imshow(handles.videoStruct(frames).cdata);
set(handles.text3, 'String', num2str(frames));
drawnow;
pause(1/handles.videoObject.FrameRate);
axes(handles.axes2);
hold on;
plot(frames, v(frames), '.r');
end
我的GUI中有兩個軸。 axes1用於顯示視頻,沒有問題。 “ v”是在視頻顯示之前在第2軸上繪制的,我想在其上添加一個標記,該標記將根據for循環所在的幀“移動”。
最后一個繪圖(frames,v(frames)...)行有效,但在axis2上繪制點。
我有2個選擇:
當循環移至下一個迭代時,以某種方式刪除最后一個標記圖。 實際上,我不希望這樣,因為將來我將實現一個滑塊來控制該標記。
在繪圖上創建標記而不用再次繪圖的任何簡便方法:)
從現在開始非常感謝您...
嘗試這個。 基本上不要在循環內調用plot。 它帶有一堆緩慢的開銷。 將其稱為循環外的所有內容。 然后在內部使用手柄更新標記x&ydata,圖像CData和文本。
v = evalin('base','a matrix in my workspace which is 1000 by 1');
plot(handles.axes2. v);
hold(handles.axes2,'on');
%USE these handles in the loop
markH = plot(handles.axes2, 1, v(1), '.r'); %Initial plot and get handle toLine.
imH = imshow(handles.videoStruct(1).cdata, 'Parent', handles.axes1);
for frames = 2:handles.frameCount-1
% Do no replot just set x, y, & cdata, etc.
set(markH,'XData',frames,'YData',v(vframes))
set(imH, 'CData',handles.videoStruct(frames).cdata);
set(handles.text3, 'String', num2str(frames));
drawnow;
pause(1/handles.videoObject.FrameRate);
end
注意:即使循環從2開始,我也假定第一幀&為index
1。但是,如果這不正確,則可以在循環外部的調用中輕松地將1s換為2s。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.