如何在Matlab中消除向量中的复数

Tim*_*Tim 5 matlab

在Matlab中,假设有一个向量,其元素可以是复杂的或真实的.我想知道如何删除非真实元素,从而减少向量的大小?感谢致敬!

b3.*_*b3. 12

使用REALIMAG功能:

>> x = [1+i; 4+3i; 5+6i]

x =

                          1 +                     1i
                          4 +                     3i
                          5 +                     6i

>> real(x)

ans =

     1
     4
     5

>> imag(x)

ans =

     1
     3
     6

编辑

上面没有回答海报的问题.这样做.

使用FINDREAL函数:

>> v = [1+i; 2; 3]

v =

                          1 +                     1i
                          2                         
                          3                         

>> v(v == real(v))

ans =

     2
     3


Pab*_*blo 5

您还可以避免使用 Matlab 的向量语法在循环中进行测试:

x = [1, 2, 3+1i, 4+2i, 5+3i, 6, 7, 8+4i, 9+0.000001i]
y = x(imag(x) == 0);
z = real(x(abs(imag(x)) < 0.00001));
Run Code Online (Sandbox Code Playgroud)

y应该[1,2,6,7]而且z应该是[1,2,6,7,9]

imag(x) == 0只要等式条件成立,就会产生一个logical带有true值的向量。x(<logical vector>)产生一个只有xwhere <logical vector>was的元素的新向量true