Azzera filtri
Azzera filtri

How to choose all other indices than ones I know?

3 visualizzazioni (ultimi 30 giorni)
Hello.
If have an array
a = [11 12 13 14 15]
and I know that I want to change every other indice to NaN apart from indices 2 and 3. How do I do this?
I tried
a(~[2,3]) = NaN;
but it does not do anything. Thanks!

Risposta accettata

Birdman
Birdman il 7 Mar 2018
a(setdiff(1:numel(a),2:3))=NaN

Più risposte (2)

Jos (10584)
Jos (10584) il 7 Mar 2018
Here are two options
a = [11 12 13 14 15]
i = [2 3]
b1 = nan(size(a))
b1(i) = a(i)
b2 = a
i2 = setdiff(1:numel(a),i)
b2(i2) = nan

Jan
Jan il 7 Mar 2018
While setdiff is the nicer solution, it has a remarkable overhead. Logical indexing is usually faster:
a = 1:10;
index = true(size(a));
index([2,3]) = false;
a(index) = NaN;

Categorie

Scopri di più su Numeric Types in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by