如何分别输出实部和虚部而不是只有一个复矢量

时间:2018-06-12 18:52:55

标签: arrays matlab complex-numbers

我有一个函数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 :(得分:2)

使用不同的变量创建一个匿名函数以避免混淆,即使用:

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

然后创建另一个匿名函数,比如N,它会提取realimag值,然后堆叠结果。

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

使用N(r)调用此匿名函数以获得预期结果。

或者,如果您已经在注释掉的代码中计算了M,那么您可以执行以下操作:

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

然后使用N(M)调用它。