getting Complex double in matlab while excel solves it

조회 수: 6 (최근 30일)
Asliddin Komilov
Asliddin Komilov 2019년 6월 15일
댓글: Asliddin Komilov 2019년 6월 15일
I had this formula in excel few years ago with less variation of WL, but now want to have a bigger range and put it into matlab and it gives me Complex double and the curve is totally different from what I expect or that came out in excel, can anyone help me here
WL=0:1E-6:4e-3;
SS=0.06977+7.0625*(1-exp(-(WL-0.26053)./0.15994)).^2.28411.*exp(-(WL-0.26053)./0.2285);

채택된 답변

Stephen23
Stephen23 2019년 6월 15일
편집: Stephen23 2019년 6월 15일
(1-exp(-(WL-0.26053)./0.15994)).^2.28411
%
% ^^^^ ^ positive values (around 5)
%^^^ ^ negative values (around -4)
% ^^^^^^^^^ fractional power of negative values.
What do you expect a fractional power of negative values to give you?
>> (-4).^2.28411
ans = 14.884 + 18.473i
  댓글 수: 5
Stephen23
Stephen23 2019년 6월 15일
편집: Stephen23 2019년 6월 15일
As I explained in my answer, you are calculating the exponent of a negative number using a fractional power, which produces a complex result. Taking a look at your example:
>> WL=1E-3:1E-3:2;
>> numel(WL)
ans = 2000
>> X = 1-exp(-(WL-0.26053)./0.15994);
>> Y = Y.^2.28411;
>> find(X(:)<0) % indices of the negative values!
1
2
3
4
... lots of sequential indices here
259
260
>> find(imag(Y(:))>0) % indices of where negative values -> complex result.
1
2
3
4
... lots of sequential indices here
259
260
You can easily avoid taking the exponent of negative values using max:
>> Z = max(0,1-exp(-(WL-0.26053)./0.15994)).^2.28411
>> find(imag(Z)>0)
ans = []
Or set those values to NaN, or whatever suits your algorithm.
"getting Complex double in matlab while excel solves it"
In fact your screenshots make it clear that MATALB solves it (correctly, giving complex results for those negative values), whereas Excel just returns a an error message.
Asliddin Komilov
Asliddin Komilov 2019년 6월 15일
it worked, thanks

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Data Import from MATLAB에 대해 자세히 알아보기

제품


릴리스

R2016a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by