外观:
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中没有发生。
请注意,当您使用复数时,i
是错误的变量名,因此我将用vec
替换它
vec=[1+1i 2+2i];
vec = complex(real(vec), 2);
编辑
带逻辑索引:
idn = real(vec)>2;
vec(idn) = complex(real(vec(idn)), 10);
在第一种情况下,您可以执行以下操作:
v = [1+1i 2+2i];
v = real(v) + 10i;
在第二种情况下,您可以执行以下操作:
v = [1+1i 2+2i 3+3i 4+4i 5+5i];
v(real(v)>2) = real(v(real(v)>2)) + 10i;
据我所知,在没有函数调用实数和/或虚数的情况下,不可能在Matlab中引用复数的实数和虚数部分,就好像它们是单独的变量一样。