转换MATLAB类型:从复数double到double

时间:2015-06-21 13:42:34

标签: arrays matlab vector double complex-numbers

我有一个类型为double的矢量让我们说 vec 。当我执行例如

  test=vec.^ 1.4623;

我最终将测试作为复杂的双类型,我想知道是否有办法将测试转换为双重,因为我想获得小数值。 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

由于

1 个答案:

答案 0 :(得分:1)

你可以暂时"删除"减号,导致复数:

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