Logical indexing of nonscalar structures

1 回表示 (過去 30 日間)
Octavian
Octavian 2021 年 1 月 30 日
回答済み: Jan 2021 年 1 月 30 日
Dear All,
I have a nonscalar nested structure s of length n, I need to index field e in s (s.a.b.c.d.e). I can do it with a loop,
for i = 1:length(s)
s(i).a.b.c.d.e = g(x(i));
end
where x is a logical array. I wanted to know if it is possible to use x for indexing s(x).a.b.c.d.e = g(x); I have lots of such assigments in my code, so it is important to know. For now, I get a dot indexing error when trying the logical indexing.
Thank you,
O

回答 (2 件)

Matt J
Matt J 2021 年 1 月 30 日
No, it is not possible.

Jan
Jan 2021 年 1 月 30 日
There is no abbreviation. There is no method for vectorizing the access of nested struct arrays.
Maybe a tiny acceleration:
gx = g(x);
for i = 1:length(s)
s(i).a.b.c.d.e = gx(i);
end

カテゴリ

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

Community Treasure Hunt

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

Start Hunting!

Translated by