The Code to replace non-threshold indexes in Array

10 Ansichten (letzte 30 Tage)
DB
DB am 14 Okt. 2024
Beantwortet: Steven Lord am 14 Okt. 2024
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!

Akzeptierte Antwort

Steven Lord
Steven Lord am 14 Okt. 2024
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>

Weitere Antworten (0)

Kategorien

Mehr zu Characters and Strings finden Sie in Help Center und File Exchange

Tags

Produkte


Version

R2023b

Community Treasure Hunt

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

Start Hunting!

Translated by