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

How to output the real and imaginary parts separately instead of having just one complex vector

我有一个函数 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))

如何分离向量的实部和复数部分?

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

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

然后创建另一个匿名函数,比如 N,提取 real and imag 个值,然后堆叠结果。

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

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


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

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

然后用N(M)调用它。