Как вывести действительные и мнимые части отдельно вместо одного сложного вектора - PullRequest
0 голосов
/ 12 июня 2018

У меня есть функция M, которая выводит комплексные числа, принимая диапазон ввода r.Вместо того, чтобы просто выводить одно комплексное число, я хотел бы иметь функцию для вывода двух значений (действительной и мнимой частей отдельно) для всех выходных комплексных векторов.Я бы предпочел, чтобы эта функция была анонимной.

Я попробовал следующее, но не сработало, поскольку я просто получаю комплексные значения с одним выходом:

r = linspace(1E-10,1.5,100);
%M= (0.5*((1i*r+0.135).* (1i*r+0.651)))./((1i*r+0.0965).* (1i*r+0.4555))
M= @(r)(0.5*((1i*r+0.135).* (1i*r+0.651)))./((1i*r+0.0965).* (1i*r+0.4555))

Как разделить действительное исложные части вектора?

1 Ответ

0 голосов
/ 12 июня 2018

Создайте анонимную функцию с другой переменной, чтобы избежать путаницы, например, создайте M с помощью:

M = @(k)(0.5*((1i*k+0.135).* (1i*k+0.651)))./((1i*k+0.0965).* (1i*k+0.4555));

, затем создайте другую анонимную функцию, скажем N, которая извлекает real и imag значений и затем суммирует результат.

N = @(k) [real(M(k)); imag(M(k))];

Вызовите эту анонимную функцию с помощью N(r), чтобы получить ожидаемый результат.


В качестве альтернативы, если вы уже вычислили M как в закомментированном коде, вы можете сделать:

N = @(k) [real(k); imag(k)];

и затем вызвать его с помощью N(M).

...