2017-02-09 2 views
2

실제로 matlab 스크립트를 Python으로 변환하고 있습니다. Python으로 배열을 사용하여 문제가 있습니다. (여전히 초보자입니다) numpy. 내 질문은 이것입니다 : matlab에 나는 여러 신호의 푸리에 변환을 계산하고 있으며, 3 by 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 

나는 파이썬이 번역을 원하고 동적으로 저장 'A'U.에서 참고의 가치있는 배열 U 만들 수 없습니다 오전 : 여기에 '는'J로 + 1 편의상 계산 오전 하지만 내 스크립트에서 'a'는 배열 (신호의 푸리에 변환)입니다.

죄송합니다. 제 영어는 유창합니다. T

+1

시도한 파이썬 코드는 무엇입니까? 어떤 오류가 있습니까? 할당은 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를 원한 것 같아서 아래에서 그것을 바꿨습니다. 당신이주의해야 할 한가지는 파이썬 객체가 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

나는 차원의 문제에 대해 질문한다. 보통 차원 3을 가지고 있지만, np.shape (U [1,2 ,:])를 할 때 U는 2의 차원을 가진 것처럼 보인다. – lefloxy

+0

당신이 바로 그렇기 때문에 이 경우 잠수함을 당겨. 가능한 경우 답을 표시하십시오. –