Replace non-zero elements in array with output of a calculation on them

Hi,
I have an array, A = [2 3 0 7 0 0 9].
How can I replace the non-zero elements of A with thier original value minus one?
I want to generate B = [ 1 2 0 6 0 0 8]
Any help would be appreciated! Thanks,
DB

 채택된 답변

mask = A~=0;
A(mask) = A(mask) - 1;
You can code it as a single expression, but that risks evaluating the comparison twice:
A(A~=0) = A(A~=0) - 1;

댓글 수: 2

Thank you! I was actually making the error of evaluating the comparison twice!
DB

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

추가 답변 (0개)

카테고리

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

태그

Community Treasure Hunt

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

Start Hunting!

Translated by