我有一个简单的结构问题。matlab:结构数据和多级索引
让我们创建:
x(1).a(:, :) = magic(2);
x(2).a(:, :) = magic(2)*2;
x(3).a(:, :) = magic(2)*3;
如何列出一个(1,1)从所有的X-ES?
我想做到这一点,如:
x(1, :).a(1,1)
,但有一个错误“对于这种类型的多级索引所需的标量指标。”
如何处理它?我知道我可以做一个循环,但这可能是最糟糕的解决方案:) 谢谢!
我有一个简单的结构问题。matlab:结构数据和多级索引
让我们创建:
x(1).a(:, :) = magic(2);
x(2).a(:, :) = magic(2)*2;
x(3).a(:, :) = magic(2)*3;
如何列出一个(1,1)从所有的X-ES?
我想做到这一点,如:
x(1, :).a(1,1)
,但有一个错误“对于这种类型的多级索引所需的标量指标。”
如何处理它?我知道我可以做一个循环,但这可能是最糟糕的解决方案:) 谢谢!
这不是最好的数据结构使用,如果这是你想要做的查询,正是因为这种索引不能直接完成。
然而,这里是一个办法,工作原理:
cellfun(@(X) X(1,1), {x.a})
语法{x.a}
从“结构数组”到单元格数组转换x
。然后,我们使用cellfun
将函数作为映射应用于单元阵列。匿名函数@(X) X(1,1)
需要一个参数X
并返回X(1,1)
。
你也可以得到你的数据是这样的:
B = cat(3,x.a);
out = reshape(B(1,1,:),1,[]);
顺便说一句,环不是邪恶。有时甚至比矢量化索引更快。尝试了两种方式,看看来讲,你最适合:
谢谢。但是如果我想要f.ex怎么办? x(1,:)。a(:,1)? – Art 2012-03-21 04:09:21