Indexing structure without using scalars

3 ビュー (過去 30 日間)
Milos
Milos 2012 年 10 月 31 日
Consider following structure:
mm(1,1).no=1;
mm(2,1).no=2;
mm(3,1).no=3;
mm(3,1).mtx=[3;3;3];
mm(2,1).mtx=[2;2;2];
mm(1,1).mtx=[1;1;1];
a1 = cat(1, mm([1,2]).no)
a1 =
1
2
a2 = cat(1, mm([1,2]).mtx(1))
Scalar index required for this type of multi-level indexing.
Is there a work-around for this type of indexing?
  2 件のコメント
Matt J
Matt J 2012 年 10 月 31 日
If your mtx and no data re all the same size, as in this example, it makes more sense to hold them in a scalar struct
mm.no=[1;2;3];
mm.mtx=[1 2 3; 1 2 3; 1 2 3];
Then you can easily extract pieces that you need
a1=mm.no(1:2);
a2=mm.mtx(:,1);
Milos
Milos 2012 年 11 月 1 日
This was just an example structure. Data is different, and matrices are way larger.

サインインしてコメントする。

採用された回答

Sean Little
Sean Little 2012 年 10 月 31 日
Unfortunately, Matlab does not support multi-level indexing like other languages do. You are probably going to have to create an intermediate variable.
a1 = [mm(1:2).mtx];
a2 = a1(1,:)
  1 件のコメント
Milos
Milos 2012 年 11 月 1 日
Thanks, that's what I feared.

サインインしてコメントする。

その他の回答 (1 件)

Matt J
Matt J 2012 年 10 月 31 日
tmp=cat(1,mm([1,2]).mtx);
a2=tmp(1)

カテゴリ

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

製品

Community Treasure Hunt

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

Start Hunting!

Translated by