如何在MATLAB中操作矩阵的虚部

时间:2016-11-06 16:59:51

标签: matlab

查找

i=[1+1i 2+2i];

我想这样做:

imag(i)=10;
  

期望的结果:

     
    

ans = [1+10i 2+10i]

  

还有这个:

m=[1+1i 2+2i 3+3i 4+4i 5+5i];

我想:

imag(m(real(m)>2)) = 10;
  

期望的结果:

     
    

ans = [ 1+1i 2+2i 3+10i 4+10i 5+10i ]

  

可惜!这些期望的结果不会发生在MATLAB中。

2 个答案:

答案 0 :(得分:0)

快速说明,当您使用复数时,i是错误的变量名称,因此我会将其替换为vec

vec=[1+1i 2+2i];
vec = complex(real(vec), 2);

修改

使用逻辑索引:

idn = real(vec)>2;
vec(idn) = complex(real(vec(idn)), 10);

答案 1 :(得分:0)

在第一种情况下,您可以执行以下操作:

v = [1+1i 2+2i 3+3i 4+4i 5+5i];
v(real(v)>2) = real(v(real(v)>2)) + 10i;

在第二种情况下,您可以执行以下操作:

{{1}}

据我所知,不可能在Matlab中引用复数的实部和虚部,就像它们是没有函数调用实数和/或虚数的单独变量一样。