извлечение вещественного числа из массива в matlab [дубликат]

этот вопрос уже есть ответ здесь:

Я хотел бы извлечь только действительные числа из массива, содержащего мнимые числа также Я хотел бы исключить мнимые числа из массива. Поэтому из массива 10 элементов, из которых 5 действительных и 5 мнимых, чтобы получить массив только из 5 элементов, который должен быть вещественным элементом чисел. Это в MATLAB

EDIT:

добавив пример

input_array = [ 1, 1+i, -2+2*j, 3, -4, j ];

желаемый результат будет

output = [ 1, 3, -4 ];

, который содержит только реальные элементы input_array.

4 ответов


другой, более векторизация образом:

sel = a == real(a); % choose only real elements

only_reals = a( sel );

можно использовать isreal в сочетании с arrayfun чтобы проверить, являются ли числа реальными и / или реальные чтобы просто сохранить реальные части. Примеры:

a = [1+i 2 3 -1-i];
realidx = arrayfun(@isreal,a);
only_reals = a(realidx);
only_real_part = real(a);

>> only_reals

  = [ 2  3]

>> only_real_part

  = [1 2 3 -1]

действительные числа имеют мнимую часть нуля, поэтому:

input_array(imag(input_array)==0);

ans =
    1     3    -4