== operator says two identical arrays aren't the same
조회 수: 7 (최근 30일)
이전 댓글 표시
I have an array which I call graph and it is made like this.
graph = sin(1:pi/10:10*pi);
There's a variable called period_two.
period_two = 22;
Then period_two is used to make two arrays out of the first one.
graph(2:period_two-1)
graph(period_two:2*period_two-3)
And the output MatLab gives me is:
graph(2:period_two-1)
ans =
Columns 1 through 8
0.9672 0.9983 0.9317 0.7739 0.5403 0.2538 -0.0575 -0.3632
Columns 9 through 16
-0.6333 -0.8415 -0.9672 -0.9983 -0.9317 -0.7739 -0.5403 -0.2538
Columns 17 through 20
0.0575 0.3632 0.6333 0.8415
and
graph(period_two:2*period_two-3)
ans =
Columns 1 through 8
0.9672 0.9983 0.9317 0.7739 0.5403 0.2538 -0.0575 -0.3632
Columns 9 through 16
-0.6333 -0.8415 -0.9672 -0.9983 -0.9317 -0.7739 -0.5403 -0.2538
Columns 17 through 20
0.0575 0.3632 0.6333 0.8415
But if I use the == operator to check if the two arrays are the same, I get.
graph(2:period_two-1) == graph(period_two:2*period_two-3)
ans =
1 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0
Can you tell me why it says that the most of the values are not the same, when I can see that the two arrays are identical?
댓글 수: 0
채택된 답변
Ken Atwell
2015년 3월 13일
편집: Ken Atwell
2015년 3월 16일
Floating point numbers are not infinitely precise, and you probably have differences too small to be noticed when displaying only 4 digits after the decimal.
댓글 수: 1
James Tursa
2015년 3월 13일
E.g., for this particular example,
>> num2strexact(graph(3:4))
ans =
'0.99834605415192101407484415176440961658954620361328125' '0.93171798264940119960186848402372561395168304443359375'
>> num2strexact(graph(23:24))
ans =
'0.99834605415192101407484415176440961658954620361328125' '0.931717982649401310624170946539379656314849853515625'
추가 답변 (0개)
참고 항목
카테고리
Help Center 및 File Exchange에서 Loops and Conditional Statements에 대해 자세히 알아보기
제품
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!