2017-02-09 81 views
2

我實際上是將一個matlab腳本轉換爲python我有一個使用Python(我仍然是初學者)numpy數組的問題。 我的問題是這樣的: 在matlab中,我正在計算幾個信號的傅里葉變換,我將它動態地存儲在一個3乘3的數組中,比如說U.我想要做的一個簡單示例如下;動態存儲在一個數組python

l = 3 ; 
c = 0 ; 
for i = 1:3 
    for j = 1:10 
     c=c+1 ; 
     a = j + 1; 
     U(i,c,:)=a ; 
    end 
end 

欲這個翻譯成Python和我無法創建排列U動態存儲的「a」的U. 注意值:我在這裏計算爲J + 1爲了簡單起見「一」但在我的腳本'a'是一個數組(信號的傅里葉變換)

對不起,我英語不好,我是法國人。 T

+1

什麼是你試過的python代碼?你得到什麼錯誤? 'numpy'的作業非常類似。 – Suever

+0

MATLAB分配給它時會增長一個矩陣。 'numpy'要求你首先初始化一個正確大小的數組。看到這個最近的問題,也標題爲'動態',http://stackoverflow.com/questions/42041016/struggling-with-dynamics-ndarray – hpaulj

+1

這似乎你事先知道數組的大小。所以你可以首先預先分配數組:'mat = np.empty(shape =(3,30))'。檢查我的形狀是否正確。 –

回答

0

我相信你最終會想要這樣的事情。令人困惑的事情之一是你的循環變量c和j在做什麼。看起來你想要c = j,所以我改變了下面的內容。你需要注意的一件事是python對象的索引從0開始,而Matlab對象的索引從1開始。因此,如果你真的開始檢查i和j的值,你會看到它們從0開始。

import numpy 
L = 3; 
C = 10; 
N = 50; # Size of the Fourier array 
U = numpy.zeros((L,C,N)) 
for i in range(L): 
    for j in range(C): 
     # Create a matrix of scalars, for testing 
     a   = i*j*numpy.ones((N,)); 
     U[i,j,:] = a; 
+0

非常感謝!這正是我想要的 – lefloxy

+0

我對U的尺寸有疑問,通常它的尺寸是3,但是當我做np.shape(U [1,2 ,:])時,U似乎有2的尺寸 – lefloxy

+0

正確,因爲你是在這種情況下拉下潛艇。如果是,請標記答案正確。 –

相關問題