Doesnt overwrite Variable inside of Loop
조회 수: 2 (최근 30일)
이전 댓글 표시
I am trying to overwrite the variable "anzahl_gamma" when gamma on the position t is equal to "g_s", g_s is 0.05
so "anzahl_gamma" should be 4 after my loop but it doesnt overwrite.
gamma = [0.005,0.01,0.025,0.0500,0.1,0.9,0.95,0.975,0.99,0.995];
signifikanzniveau = 0.95;
g_s = 1 - signifikanzniveau; % 0.05
anzahl_gamma=0;
for t = 1:10
if gamma(t)== g_s
anzahl_gamma = t;
end
end
Why does this give me anzahl_gamma=0;
and when i change g_s to 0.05 directly it works:
for t=1:10
if gamma(t)==0.05
anzahl_gamma=t;
end
end
with 0.05 directly i get anzahl_gamma=4;
What am i missing here? why is the first one (gamma(t)==g_s) not working?
댓글 수: 0
채택된 답변
Matt Gaidica
2021년 1월 22일
편집: Matt Gaidica
2021년 1월 22일
gamma = int32([0.005,0.01,0.025,0.0500,0.1,0.9,0.95,0.975,0.99,0.995] * 1000);
signifikanzniveau = 0.95;
g_s = int32((1 - signifikanzniveau) * 1000); % 0.05
anzahl_gamma = 0;
for t = 1:10
if gamma(t) == g_s
anzahl_gamma = t;
end
end
There are a few ways to solve this. See here about floating point numbers. Also, beware gamma is a reserved function, I try to stay away from using those as variable names.
댓글 수: 2
Stephen23
2021년 1월 22일
편집: Stephen23
2021년 1월 22일
"I didnt know that matlab cannot compare vectors if they do not consist of integer numbers"
It can. But operations on the binary floating point numbers that your computer hardware supports (and that enable MATLAB to perform very fast and efficient HW operations for many numeric computations) by their very nature accumulate floating point error. This is simply a feature of binary floating point numbers.
It is up to the programmer to understand the behaviors of binary floating point numbers. For example, Iinstead of testing for exact equality, the recommended approach is to compare the absolute difference against a tolerance:
abs(A-B)<tol
Read more about binary floating point numbers:
This is worth reading as well:
추가 답변 (0개)
참고 항목
카테고리
Help Center 및 File Exchange에서 Gamma Functions에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!