How to choose all other indices than ones I know?

2 visualizaciones (últimos 30 días)
Markus Toivonen
Markus Toivonen el 7 de Mzo. de 2018
Respondida: Jan el 7 de Mzo. de 2018
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!

Respuesta aceptada

Birdman
Birdman el 7 de Mzo. de 2018
a(setdiff(1:numel(a),2:3))=NaN

Más respuestas (2)

Jos (10584)
Jos (10584) el 7 de Mzo. de 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 el 7 de Mzo. de 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;

Categorías

Más información sobre Creating and Concatenating Matrices en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by