Peculiar behavior regarding matrix operations
이전 댓글 표시
Hi,
I just discovered something that I found really weird when I was working with some element-wise multiplication and division for large matrices. I found that the order in which I carry out the operations gives me different results, the line of code giving this behavior is the following:
efrog2=efrog./abs(efrog).*spectrogram;
where efrog and spectrogram are 1325x1325 (efrog contains complex values) matrices. Now if I change the order to:
efrog3=spectrogram.*efrog./abs(efrog);
I get a different result, I if look at the maximum difference I get:
max(max(abs(efrog3-efrog2)))=6.0024e+08
However, if I change the order to:
efrog4=efrog.*spectrogram./abs(efrog);
I get:
max(max(abs(efrog3-efrog4)))=0
I tried the same thing with small 4x4 matrices, but for them the order (as one would suspect) didn't matter. Does anybody have any idea about what is going on here?
Thanks in advance
Cheers
Robert
댓글 수: 2
Walter Roberson
2016년 2월 1일
what is max(abs(efrog(:)), max(spectrogram(:)) ?
Is it possible that 6.0024e+08 is on the order of max(eps(efrog(:)) or max(eps(spectrogram)) ?
Robert
2016년 2월 1일
채택된 답변
추가 답변 (0개)
카테고리
도움말 센터 및 File Exchange에서 Get Started with Curve Fitting Toolbox에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!