2016-07-20 1 views
2
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 создает мнимые части, когда только один элемент становится сложным?

+0

Хотя различные языки программирования называют их разными вещами, вектором/массивом является принципиально другой структурой данных, чем массив списка/ячеек , См. 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) предварительно откладывает и добавляет (если двусвязно). –

+0

Матрицы Matlab - это правильные массивы: постоянное время индекса. Единственный способ добиться этого - гарантировать, что каждый элемент занимает точно такой же объем памяти, т. Е. Каждый элемент имеет фиксированный тип (float32, float64, complex64, complex128 и т. Д.). Когда вы вставляете/добавляете сложное значение в массив float64 в Matlab, чтобы массив сохранял свой поиск O (1), Matlab должен был создать новый массив типа complex128, скопировать старый массив в новый и добавьте новое значение. –

ответ

8

Атрибут complex - это свойство массива, а не каждой записи. Если запись должна быть сложной, все записи сложны; или, скорее, массив.

Вы говорите

Real реален

но реальный сложный тоже. Сложное число с нулевой мнимой частью совпадает (имеет такое же значение) как действительное число.

Пример с номерами:

>> x = 3; % real number 

>> y = complex(3, 0); % force to be complex 

>> whos x y % check that x is real and y is complex 
    Name  Size   Bytes Class  Attributes 

    x   1x1     8 double    
    y   1x1    16 double complex 

>> x==y % are they equal? 
ans = 
    1 

Пример с массивами:

>> x = [2 3 4]; % real values: x is real 

>> y = [x, 5+6j]; % include a complex value: y becomes complex 

>> x(1:3)==y(1:3) % equal values? 
ans = 
    1  1  1 
+3

Чтобы подчеркнуть, что атрибут 'complex' является свойством массива, а не элементами массива: обратите внимание, что' isreal' возвращает один вывод для целого массива. 'isreal (3)' истинно, а 'isreal (complex (3,0))' false, хотя 'complex (3,0)' имеет нулевую мнимую часть. –

 Смежные вопросы

  • Нет связанных вопросов^_^