转换 MATLAB 类型:从复数双精度到双精度
Convert MATLAB type: from complex double to double
我得到了一个 double 类型的向量,比方说 vec。例如当我表演时
test=vec.^ 1.4623;
我最终得到 test 作为 complex double 类型,我想知道是否有办法将 test 到 double 因为我想得到十进制值。
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
我得到了一个 double 类型的向量,比方说 vec。例如当我表演时
test=vec.^ 1.4623;
我最终得到 test 作为 complex double 类型,我想知道是否有办法将 test 到 double 因为我想得到十进制值。 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