2017-05-07 63 views
1

所以我正在研究MatLab GUI分配。它基本上是一個估算遊戲。在每次試驗中,用戶都會猜測左軸上顯示的相關性。當他們點擊提交時,我的代碼會計算他們的估計值和實際相關值之間差值的絕對值。 目前爲止這麼好。MatLab GUI繪製一條按鈕按下更新的界線

在右邊的軸上,我想繪製一條每次點擊「提交」時更新的線。 x座標將是試驗編號,y座標將是前面提到的絕對差值。 我可以使用點而不是一條線,通過使用「散點圖」或「繪圖」,成功地繪製這些信息,但是當我嘗試使它成爲一條線時,沒有任何東西出現,雖然軸似乎更新... 這兩個如果標記是'。',則以下代碼有效。或'o'或's'或'x'......從字面上來說,任何標記......但我無法得到它連接點...我試圖使用動畫線和drawnow但搞砸了,但didn 「T制定出對我也..

plot(handles.trial, handles.diff(handles.trial),'-.'); hold on; %plot trialwise absolute differences 

scatter(handles.trial, handles.diff(handles.trial),'-.'); hold on; %plot trialwise absolute differences


**問題解決了! 查看下面的解決方案

+0

我想handles.diff是所有的 估計和實際相關 'handles.diff(handles.trial,1)= ABS(handles.correlation(handles.trial)之間的差值的矢量 - str2num (得到(handles.estimation, '字符串')));實際相關性與估計值之差的絕對值% 如果我刪除'(handles.trial)',沒有繪製任何圖形,並且它給了我一個錯誤信息。 – Ian

+0

如果我在腳本中爲一個圖形我會預先分配一個名爲'diff'的矩陣,並且在for循環的每次迭代中填充矩陣單元格'diff(ii)' – Ian

回答

0

解決方案: 將所有相關數據存儲在矩陣中handles.DATA。爲此,需要在第一次試驗之前有一些東西,所以在初始化期間,我設置了handles.DATA = [0 0],然後按下按鈕(提交),結束試驗,來自該試驗的數據被連接到數據矩陣:handles.DATA = vertcat(handles.DATA, [x y])。在這下面我可以做我想要的陰謀:plot(handles.DATA(:,1), handles.DATA(:,2),'Color','r'

*注意:不要hold on,因爲那樣你就會有線條堆疊在一起。 **如果您不指定線條顏色,則每次單擊「提交」時線條將變成不同的顏色,因爲每次都基於更新的信息生成一條新線條。