我通过以下方式创建了一个结构:
a(1).x = {[1.1 5 8], [3 5 6]};
a(2).x = {[3.1 0 4], [9 8 7]};
并希望获得一个值为[1.1 3.1]的数组。
我试过了:
a.x{1}(1,1)
Field reference for multiple structure elements that is
followed by more reference blocks is an error.
有什么想法吗?
答案 0 :(得分:2)
语法错误告诉您不能在多个struct元素中进一步进行子引用。因此,明显的单行 - 比节省内存的for
循环要慢得多:
arrayfun(@(y) y.x{1}(1), a)
只是为了比较性能,基于循环的版本
function A = my_extractor(S)
A = zeros(size(S));
N = numel(S);
for k = 1:N
A(k) = S(k).x{1}(1);
end;
end
答案 1 :(得分:1)
如果您的.x
字段始终具有相同的尺寸,那么您可以尝试
A = vertcat(a.x);
X = vertcat(A{:,1});
X(:,1)