Indexing structure without using scalars

1 次查看(过去 30 天)
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 个)

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

类别

Help CenterFile Exchange 中查找有关 Matrix Indexing 的更多信息

产品

Community Treasure Hunt

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

Start Hunting!

Translated by