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
Почему первые 3 элемента внезапно стали сложными? И как я могу помешать Matlab сделать это? Реальный реален. И это не должно изменяться до мнимого только потому, что другой элемент является мнимым.Почему Matlab создает мнимые части, когда только один элемент становится сложным?
Хотя различные языки программирования называют их разными вещами, вектором/массивом является принципиально другой структурой данных, чем массив списка/ячеек , См. Http://stackoverflow.com/questions/393556/when-to-use-a-linked-list-over-an-array-array-list, но в целом: Векторы/массивы предлагают O (1) чтение и запись, но O (N) добавляет (пишет за пределами массива) - как правило, большой массив должен выделяться операционной системой, а все N элементов исходного массива копируются в новое пространство. Списки предлагают O (N) чтение и запись, но O (1) предварительно откладывает и добавляет (если двусвязно). –
Матрицы Matlab - это правильные массивы: постоянное время индекса. Единственный способ добиться этого - гарантировать, что каждый элемент занимает точно такой же объем памяти, т. Е. Каждый элемент имеет фиксированный тип (float32, float64, complex64, complex128 и т. Д.). Когда вы вставляете/добавляете сложное значение в массив float64 в Matlab, чтобы массив сохранял свой поиск O (1), Matlab должен был создать новый массив типа complex128, скопировать старый массив в новый и добавьте новое значение. –