[問題] GUI中繪圖 第一次可以跑 第二次不行

看板MATLAB作者 (肥西瓜)時間11年前 (2014/05/02 12:33), 11年前編輯推噓1(107)
留言8則, 4人參與, 最新討論串1/1
我現在有寫一個GUI 裡面有兩個axes 按下RUN(按鍵)後 一次跑兩張圖 而我兩個axes的TAG分別是 BS_plot 和 Optimize_Result 以下是部分程式碼 %------- Solution [BS BS_Cost Cost_BS_plot times_plot]=ABC_Optimization(para,para.Employed_Num,para.Onlookers_Num, para.Scouts_Num,para.Limit_Num,para.times); %--------------------BS------ plot(findobj('Tag','BS_plot'),times_plot,Cost_BS_plot); %---------------------- TAG='Optimize_Result'; h=Plot_Arrange(BS,BS_Cost,para,TAG); %此段是自行寫的一個畫圖函數 set(findobj('Tag',TAG),'UserData',BS) set(findobj('Tag','Run'),'UserData',h) Time=toc; set(findobj('Tag','Time2'),'String',[num2str(Time),'s']) 我的time_plot和Cost_BS_plot分別是1x50的陣列 現在問題出在 我第一次按RUN後 我要的兩張圖 plot那張跟 自己寫的那張都有正常顯示 但是我若要跑第二次就會出現 Error using ==> plot Vectors must be the same lengths. Error in ==> Arrangement>Run_Callback at 109 plot(findobj('Tag','BS_plot'),times_plot,Cost_BS_plot); Error in ==> gui_mainfcn at 96 feval(varargin{:}); Error in ==> Arrangement at 17 gui_mainfcn(gui_State, varargin{:}); Error in ==> guidemfile>@(hObject,eventdata)Arrangement('Run_Callback',hObject,eventdata,guidata(hObject)) ??? Error while evaluating uicontrol Callback 但是我只要刪除 plot(findobj('Tag','BS_plot'),times_plot,Cost_BS_plot); 以上這行畫圖程式碼 也就是不要畫這張圖時我程式就可以安穩的run 不管我按幾次 都不會出錯 以上錯誤有說我向量長度不相等 但是我有逐次執行過 真的都相等 此點我是確定的 想請問各位大大 我是不是哪裡寫的有問題.... 謝謝了 補充一下我所謂的第一次可以跑是指點開fig按run可以 但是再按一次就不行 但是我只要關掉fig再開起來按run就又可以跑 我快被搞瘋掉的 論文就剩這步了 O_Q 再補充 剛剛我使用彈出方式一樣可以順利run 寫成以下方式 figure(2); plot(times_plot,Cost_BS_plot); 跑起來沒有問題 所以我想數據本身應該是沒錯 就是不知道我上面程式碼錯在哪 拜託各位大大 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.138.143.112 ※ 文章網址: http://www.ptt.cc/bbs/MATLAB/M.1399005235.A.249.html ※ 編輯: TRENT0331 (140.138.143.112), 05/02/2014 12:40:07 ※ 編輯: TRENT0331 (140.138.143.112), 05/02/2014 12:48:06

05/02 20:45, , 1F
在plot前加個cla試試?
05/02 20:45, 1F

05/03 02:10, , 2F
改用axes(handles.BS_plot);加在plot前面試試看?
05/03 02:10, 2F

05/03 14:07, , 3F
從錯誤訊息來看,你的plot的x與y的大小不對
05/03 14:07, 3F

05/03 14:08, , 4F
雖然你的的time_plot和Cost_BS_plot分別是1x50的陣列
05/03 14:08, 4F

05/03 14:09, , 5F
可是你plot時是用time"s"_plot
05/03 14:09, 5F

05/03 14:10, , 6F
p.s. 你的變數名稱太醜了,建議名稱改成一看就知道含意
05/03 14:10, 6F

05/03 20:26, , 7F
一樓跟二樓方法都試過了,哭哭
05/03 20:26, 7F

05/03 20:29, , 8F
謝謝三樓的建意
05/03 20:29, 8F
文章代碼(AID): #1JOo0p99 (MATLAB)
文章代碼(AID): #1JOo0p99 (MATLAB)