簡體   English   中英

如何在Matlab GUIDE中的axis1的現有圖上創建標記?

[英]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個選擇:

  1. 當循環移至下一個迭代時,以某種方式刪除最后一個標記圖。 實際上,我不希望這樣,因為將來我將實現一個滑塊來控制該標記。

  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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM