0
我有一個python for
循環,似乎有一個變量在循環內自己的變化。我的變量定義:變量內部循環自身變化
yhat = np.empty((1,len(prices)))
yhat[:] = nan
yhat = yhat.astype('float')
e = Q = yhat
P = R = np.matrix(np.zeros((2,2)))
B = np.empty((2,len(prices)))
B[:] = nan
B = np.matrix(B)
B[:,0] = 0
的循環是:(prices
是一個數據幀)
for t in xrange(0,len(prices),1):
if t > 0:
B[:,t] = B[:,t-1]
R = P+Vw
yhat[0,t] = x[t,:]*B[:,t]
print yhat[0,t]
Q[0,t] = x[t,:]*R*x[t,:].T + Ve
print yhat[0,t]
e[0,t] = y[t,0] - yhat[0,t]
print yhat[0,t]
K = (R*x[t,:].T)/Q[0,t]
B[:,t] = B[:,t]+K*e[0,t]
P = R - K*x[t,:]*R
我打印的yhat
,因爲我已經收窄異常的代碼到它。在設置了yhat
@ t的值後,它似乎改變了。當我運行的代碼,它打印出:
0.0
0.001
20.438747
另外,我很擔心減法爲e[0,t]
因爲某種原因減法導致的yhat
的價值在那當前時刻?
也許我錯過了一些明顯的東西。我對python比較新,我從MATLAB轉換過來。
編輯:x & y也是矩陣對象。所以所有的乘法都是矩陣點積。
美麗。現在卡爾曼濾波器像夢一樣工作。現在這只是一個粗糙的細微差別嗎?或者與熊貓數據框有相同的結果嗎? – denbjornen505
@ denbjornen505:這是* Python *的細微差別;名稱是*標籤*,對一個對象的引用。您可以將任意數量的標籤附加到對象上。 –
@ denbjornen505:參見http://nedbatchelder.com/text/names.html瞭解關於Python中的名稱如何工作的偉大文章和演示。 –