有誰知道它爲什麼告訴我列表索引超出範圍?我試圖「翻譯」一個Matlab文件,並且我創建了列表而不是單元陣列,現在主要問題在於索引,它對我來說似乎是正確的,我不知道如何有問題從Matlab翻譯成Python。列表索引超出範圍。
#Projection operator Pi
piOperator = np.zeros((N*N, N*N))
#Psi0 state
Psi0 = np.zeros((N*N, 1))
for i in xrange(0 , N-1):
aux = np.zeros((N,1)) #Auxiliary vector
aux[i]= 1
A = np.sqrt(G[:,i])
psi = []
P = []
psi.append(np.tensordot(aux, A))
P.append(np.dot(psi[i],np.transpose(psi[i])))
piOperator = piOperator + P[i]
Psi0 = Psi0 + psi[i]
Psi0 = 1/np.sqrt(N)*Psi0
---------------------------------------------------------------------------
IndexError Traceback (most recent call last)
<ipython-input-450-0816498ad018> in <module>()
11 P = []
12 psi.append(np.tensordot(aux, A))
---> 13 P.append(np.dot(psi[i],np.transpose(psi[i])))
14 piOperator = piOperator + P[i]
15 Psi0 = Psi0 + psi[i]
IndexError: list index out of range
原來Matlab代碼是:
Pi = zeros(n^2,n^2);
Psi0 = zeros(n^2,1);
for k=1:n
aux = zeros(n,1);
aux(k) = 1;
psi{k} = kron(aux,sqrt(G(:,k)));
P{k} = psi{k} * psi{k}';
Pi = Pi + P{k};
Psi0 = Psi0 + psi{k};
end
Psi0 = 1/sqrt(n)*Psi0;
能否請您發表完整的代碼片段?例如,G缺失。 – csl