I have an M x N matrix, where I want to test whether each element is greater than some constant a, and if it is, perform some arithmetic to it. The only way I can think of doing this is using 2 For loops nested to select each element and an If statement to perform checking. Is this the best I can do?

 채택된 답변

Tigersnooze
Tigersnooze 2011년 9월 19일

0 개 추천

You can say something like this, instead of using a loop (assuming the matrix is called A):
A(A > a) = A(A > a) + arithmetic.
"Vectorizing" like this won't have significant speed advantages with smaller matrices, but when the matrix gets bigger you'll see huge time savings. Just a heads up for the future.

댓글 수: 4

Leor Greenberger
Leor Greenberger 2011년 9월 19일
Thank you! this is perfect!
Leor Greenberger
Leor Greenberger 2011년 9월 19일
How would I go about doing this for a matrix A where I want to check whether each element == any value in some vector b.
A(A == b) doesn't work (didn't think it would)
Sean de Wolski
Sean de Wolski 2011년 9월 19일
Leor, look at ismember:
doc ismember
Leor Greenberger
Leor Greenberger 2011년 9월 19일
Thank you, sir!

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

추가 답변 (0개)

카테고리

도움말 센터 및 File Exchange에서 Multidimensional Arrays에 대해 자세히 알아보기

태그

Community Treasure Hunt

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

Start Hunting!

Translated by