查找
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中。
答案 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中引用复数的实部和虚部,就像它们是没有函数调用实数和/或虚数的单独变量一样。