Getting wrong results while calling a function.

조회 수: 7 (최근 30일)
Asif Rahman
Asif Rahman 2021년 9월 2일
댓글: Rik 2021년 9월 3일
I have written a simple function. It takes two inputs, only when two inputs are equal the output should be zero.
function I = getI(E,Eg)
if (E<=1.5) && (E ~= Eg)
I=(500*E)/1.5;
elseif (E>1.5) && (E<=4) && (E ~= Eg)
I=500*(1-((E-1.5)/(4-1.5)));
elseif (E==Eg)
I=0;
end
end
Now the function works as expected most of times,but when the value of Eg is 1.38,1.39,1.4, 2.84 or 2.6 the code doesnot gives I=0 even when the value of Eg is equal to E. Example:
I tried changing the if conditions, changing their positions. No change.

답변 (1개)

Rik
Rik 2021년 9월 2일
Some numbers cannot be represented exactly in binary. You will either need to round both numbers to make sure they have the exact same representation, or compare the differences to a tolerance.
  댓글 수: 2
Asif Rahman
Asif Rahman 2021년 9월 2일
Shouldn't this show wrong result also?
If not than can you please guide me about a different approach. Thanks.
Rik
Rik 2021년 9월 3일
This shows the correct result, because the numbers are generated the same way.
If a number can't be represented exactly by a double, it might be represented slightly differently if the method of calculation is different, e.g. writing 1.4 directly and using the colon operator.

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

카테고리

Help CenterFile Exchange에서 EEG/MEG/ECoG에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by