转换 MATLAB 类型:从复数双精度到双精度

Convert MATLAB type: from complex double to double

我得到了一个 double 类型的向量,比方说 vec。例如当我表演时

  test=vec.^ 1.4623;

我最终得到 test 作为 complex double 类型,我想知道是否有办法将 testdouble 因为我想得到十进制值。 ps:值得一提的是,我对从以下位置检索到的实数不感兴趣:

 real(test)

举例说明:

vec(2)^1.4623 = -1.8293^1.4623 =  -2.4185

但我得到了:

test(2)=vec(2)^1.4623= -0.285678007027767 - 2.40147255196906i

简而言之,一种转换方式:

test(2) = -2.4185

谢谢

您可以暂时"remove"减号,这导致复数:

vec = [-2.5, 2, -1.5 , 1, -0.5, 0];
sign_vec = sign(vec);
test = sign_vec.*((sign_vec.*vec).^1.4623);

这导致:

test =
      -3.8186    2.7555   -1.8092    1.0000   -0.3629         0

一种通用的转换方式涉及 abs 函数:

>> test = (-1.8293)^1.4623
test = 
      -0.2858 - 2.4015i

>> -abs(test)
ans =
     -2.4185