我正在嘗試查找正弦曲線的最大值並將其顯示在一個子圖中。並嘗試將其更新爲動畫。但是最大值的子圖給出所有的零值。當我打印數組時,它不是零。我認爲它不更新y值。我無法弄清楚原因。任何幫助將不勝感激。動畫劇情更新
我將把我的代碼,它是可執行的:
from pylab import *
import time
ion()
fs = 1e6
Ts = 1/fs
SNR=10
sinfreq=2*pi*1e5
pack= 512
t = Ts*arange(0,pack)
f = fs*(arange(0,pack)-pack/2)/pack
max_y = zeros (len(t))
y=sin(sinfreq*t)
y=y+randn(size(y))/sqrt(10^(SNR/10)*2)
subplot(211)
line1, = plot(y)
subplot(212)
line2, = plot(max_y)
for i1 in arange(1,1000):
y=sin(sinfreq*t)
y=y+randn(size(y))/sqrt(10^(SNR/10)*2)
line1.set_ydata(y)
mk=0
for mk in range(0,len(y)):
if y[mk] > max_y[mk]:
max_y[mk] = y[mk]
print max_y
line2.set_ydata(max_y)
draw()
waitforbuttonpress(timeout=0.5)
好的,對於縮進的抱歉錯誤。我看到了另一件事,但只要這是我的第一個問題,我就沒有看到編輯部分。現在我改變了,並且糾正了。我說它是可執行的,因爲我在放入這裏之前執行它。對不起,我一定做了一些事情,並改變縮進。但是你所說的代碼與我的做法不一樣。現在你所做的所有最大值都是相同的,但我正在進行樣本比較,併爲每個地方找到最大值。你確定他們是一樣的嗎? – sema 2012-08-12 21:02:52
但我的問題仍然是一樣的。乳清第二副圖未更新? – sema 2012-08-12 21:26:14
就我所知,子圖*正在被更新。然而,情節幾乎總是相同的(我可以看到它由於微小的變化而更新,可能是由於分辨率和舍入)。看看你正在打印的max_y值(更好的是,看看前5或10,避免填滿你的終端)。 這就是爲什麼我問你是否想要循環;嘗試用'max_y [:] = max(y)語句'替換循環並查看它是否更改。注意:在這種情況下,您需要調整第二個繪圖上的刻度或將max_y除以100;否則它繪製在圖的外面。 – Evert 2012-08-13 10:24:21