How to choose all other indices than ones I know?

3 ビュー (過去 30 日間)
Markus Toivonen
Markus Toivonen 2018 年 3 月 7 日
回答済み: Jan 2018 年 3 月 7 日
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!

採用された回答

Birdman
Birdman 2018 年 3 月 7 日
a(setdiff(1:numel(a),2:3))=NaN

その他の回答 (2 件)

Jos (10584)
Jos (10584) 2018 年 3 月 7 日
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 2018 年 3 月 7 日
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;

カテゴリ

Help Center および File ExchangeNumeric Types についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by