2015-06-21 3 views
1

У меня есть вектор типа double, скажем, vec. Когда я выступаю, напримерКонвертировать тип MATLAB: от сложного двойного до двойного

test=vec.^ 1.4623; 

Я в конечном итоге с тест как комплекс двойного типа, и мне интересно, если есть способ, чтобы преобразовать тест в двойной, так как я хотел бы получить десятичные значения. пс: Стоит highligthing, что я не заинтересован в реальных чисел, полученных из:

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

Вы можете временно "удалить" знак минус, который вызывает сложные номера:

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 
+0

это потрясающе! очень приятный «трюк», приветствия. – owner

Смежные вопросы