The Code to replace non-threshold indexes in Array

조회 수: 10 (최근 30일)
DB
DB 2024년 10월 14일
답변: Steven Lord 2024년 10월 14일
Hello,
A = randi(5,5);
idx = find(A > 3);
A(idx) = log10(A(idx));
After running the above lines of code, what's the easiest(fastest) way to replace the non idx index in A with a certain value(100 for example)?
A(~idx) = 100; doesn't work the way I intended to.
Thanks!

채택된 답변

Steven Lord
Steven Lord 2024년 10월 14일
Get rid of the find call.
A = randi(5,5)
A = 5×5
5 3 2 2 5 1 1 4 5 3 1 4 2 5 2 1 2 3 2 2 1 1 2 5 3
<mw-icon class=""></mw-icon>
<mw-icon class=""></mw-icon>
idx = (A > 3) % Make a logical mask
idx = 5x5 logical array
1 0 0 0 1 0 0 1 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 1 0
A(idx) = log10(A(idx)) % Use the logical mask to identify locations to change
A = 5×5
0.6990 3.0000 2.0000 2.0000 0.6990 1.0000 1.0000 0.6021 0.6990 3.0000 1.0000 0.6021 2.0000 0.6990 2.0000 1.0000 2.0000 3.0000 2.0000 2.0000 1.0000 1.0000 2.0000 0.6990 3.0000
<mw-icon class=""></mw-icon>
<mw-icon class=""></mw-icon>
A(~idx) = 100 % Use the negation of the logical mask to identify locations to change
A = 5×5
0.6990 100.0000 100.0000 100.0000 0.6990 100.0000 100.0000 0.6021 0.6990 100.0000 100.0000 0.6021 100.0000 0.6990 100.0000 100.0000 100.0000 100.0000 100.0000 100.0000 100.0000 100.0000 100.0000 0.6990 100.0000
<mw-icon class=""></mw-icon>
<mw-icon class=""></mw-icon>

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Characters and Strings에 대해 자세히 알아보기

태그

제품


릴리스

R2023b

Community Treasure Hunt

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

Start Hunting!

Translated by