K>> asdfasdf=[1 1 1]
asdfasdf =
1 1 1
K>> asdfasdf(4)=-2.3604 + 0.1536i
asdfasdf =
1.0000 + 0.0000i 1.0000 + 0.0000i 1.0000 + 0.0000i -2.3604 + 0.1536i
왜 처음 세 요소가 갑자기 복잡해 졌습니까? 그리고 어떻게하면 Matlab이이를 막을 수 있습니까? 진짜는 진짜입니다. 그리고 다른 요소가 상상이기 때문에 이것은 상상의 것으로 바뀌면 안됩니다.왜 하나의 요소 만 복잡해지면 Matlab은 허수 성분을 생성합니까?
만은 벡터/배열 목록/셀 어레이보다 근본적으로 다른 데이터 구조입니다 . http://stackoverflow.com/questions/393556/when-to-use-a-link-list-over-an-array-array-list를 참조하십시오. 그러나 간단히 말해서 벡터/배열은 O (1) 읽기 및 쓰기, 그러나 O (N)은 (배열을 넘어서 쓰기) 추가합니다. 더 큰 배열은 운영 체제에 의해 할당되어야하고 원래 배열의 모든 N 요소는 새 공간에 복사되어야합니다. 목록은 O (N) 읽기 및 쓰기를 제공하지만 O (1)은 미리 보류 및 추가됩니다 (이중 연결 인 경우). –
Matlab의 배열은 상수 인덱스 시간 인 올바른 배열입니다. 이를 달성하는 유일한 방법은 각 요소가 정확히 동일한 양의 메모리를 차지하도록 보장하는 것입니다. 즉, 각 요소는 고정 된 형식 (float32, float64, complex64, complex128 등)을 갖습니다. Matlab의 float64 배열에 복합 값을 삽입/추가 할 때 배열이 O (1) 조회를 유지하려면 Matlab은 complex128 유형의 새 배열을 만들고 이전 배열을 새 배열에 복사 한 다음 새로운 복합 값을 추가하십시오. –