필터 지우기
필터 지우기

Comparing Values in 3D Matrix

조회 수: 3 (최근 30일)
Matthew
Matthew 2016년 2월 8일
댓글: Matthew 2016년 2월 20일
I am doing a convergence study, which means I will loop through some numerics and compare the results of t and t-1, until an acceptable convergence value is reached. I intend to construct a 3D matrix (50x50x2). The two planes of the matrix will store t and t-1 values respectively. For each of the 50x50 matrix entries, I need to do an error check between the two planes (i.e., subtract t-(t-1) & take their absolute value). Once all of the 50x50 matrix entries meet the error check and are below a threshold value, convergence is met. I can brute force this and write the code to go through the two planes of the matrix one by one, comparing the 2500 values of t and t-1 each separately. But I have to imagine Matlab has some function to do this automatically without brute force, which would automatically look at the two planes and scour through all of the values looking for exceedances. Does anybody know if such a function exists?

채택된 답변

Stephen23
Stephen23 2016년 2월 8일
편집: Stephen23 2016년 2월 8일
Just use diff with its optional dim argument:
Y = abs(diff(X,1,3))
You can then compare all of these values with a scalar threshold:
idx = Y>thr
what you do with the index depends on your code. To check that none of the value are above the threshold, you just need to do this:
~any(idx)
  댓글 수: 3
Stephen23
Stephen23 2016년 2월 18일
편집: Stephen23 2016년 2월 18일
The tilde ~ is a logical NOT of each element in the array it is operating on. You can try it yourself:
>> [1,0,1]
ans = 1 0 1
>> ~[1,0,1]
ans = 0 1 0
You might also like to experiment with this:
~any(idx(:))
Matthew
Matthew 2016년 2월 20일
Thank you for the help. I was able to write my code using your suggestions!

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

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Logical에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by