3
结构的逻辑索引可以说我有这样的结构:与各种尺寸的字段
S.index = 1:10;
S.testMatrix = zeros(3,3,10);
for x = 1:10
S.testMatrix(:,:,x) = magic(3) + x;
end
S.other = reshape(0:39, 4, 10);
它包含1×10载体,3x3x10多页阵列和4×10矩阵。现在说我只需要选择对应的指数2和8
之间mask = S.index > 2 & S.index < 8;
structfun(@(x) x(mask), S, 'UniformOutput', 0);
首先这对于只有载体,这是非常合情合理的工作正常的条目。所以我想我所需要做的就是扩大我的面具。所以我做到了。
test = structfun(@(x) x(repmat(mask, size(x, ndims(x) - 1), 1)), S, 'UniformOutput',0);
展开的mask
对于矩阵而言是正确的,但不是多页面阵列。 2D矩阵被平坦化为一个矢量。
如果我去索引这些元素单独我会做这样的事情:
S2.index = S.index(mask);
S2.other = S.other(:,mask);
S2.testMatrix = S.testMatrix(:,:,mask);
我的使用情况是几百结构各有20+场。如何编写索引脚本?确切的问题发生局限于1×N向量,3×N和4×N矩阵和3×3×N阵列的结构。掩码是基于表示时间的矢量之一构造的。字段名称对于每个结构都是不变的,所以我可以蛮横强制事物并输入命令并将其作为函数运行,但我正在寻找一种智能的方式来对其进行索引。
更新:这是看起来很有前途的东西。
fn = fieldnames(S);
for x = 1:length(fn)
extraDim = repmat({':'}, 1, ndims(S.(fn{x})) - 1);
S2.(fn{x}) = S.(fn{x})(extraDim{:}, mask);
end
这混淆了我 –
@AnderBiguri允许在使用':''使索引与字符[有点不一致](http://stackoverflow.com/q/36189651/2586922),是 –