所以我在MATLAB一個簡單的循環,執行以下操作:試圖讓MATLAB的身影停止「閃爍」
for p = 1:100
x = 4.*randn(1,100);
y = 7.*randn(1,100);
figure(1)
plot(randn(1,100));
figure(2);
plot(randn(1,100));
end
x和y是編造的,但是這是它的JIST。無論如何,當我運行這個代碼時,毫不奇怪,MATLAB會做出兩個數字並相應地進行繪圖。問題是,當我這樣做時,我在數字之間出現了一種「閃爍」,並且它使得看到x和y的質量隨着時間的推移而變得更差。
我發現了一種方法,使情節更加平滑像這樣的一個:
figure(1);
for p = 1:100
x = 4.*randn(1,100);
y = 7.*randn(1,100);
plot(randn(1,100));
drawnow
end
如果我這樣做,那麼當然圖(1)將繪製得非常順利出很好的x,無圖(1) '眨眼間',但現在我不能顯示圖(2)或y!
如何在不同的數字(而不是子圖)上平滑地顯示這兩個數量而不閃爍?
編輯:
測地感謝你的回答,解決方案的工作,但有是,我沒有想到會是一個問題,一個微妙的,但它是。
1)我無法在此解決方案中使用'imagesc'。
例如,
figure(1);
aone = axes;
figure(2);
atwo = axes;
for p = 1:100
x = 4.*randn(1,100);
y = 7.*rand(10,100);
plot(aone,x);
drawnow;
imagesc(atwo,y);
drawnow;
end
在這種情況下用於imagesc的部分(Â雙,y)的崩潰。
感謝Geodesic。你能否詳細說明究竟是在做什麼?我閱讀文檔,但我仍然不確定它在做什麼。謝謝! – Spacey
本質上它迫使Matlab在代碼執行過程中更新數字窗口。如果您將drawnow命令從此循環中取出,您會發現兩軸上確實有輸出,但很可能您只會看到p = 100值(而不是for循環中的每組值) 。有可能你的電腦運行這個例子的速度太快了,你看不到這個。將p更改爲1:1000或1:10000,您應該明白我的意思。 – Geodesic
大地測量,感謝您的回答,但是有一個微妙的問題正在成爲一個問題,即使我認爲它不會。我已經編輯了相應的問題。 – Spacey