在matlab中从struct中矢量化数据

时间:2014-10-10 12:56:58

标签: arrays matlab

我通过以下方式创建了一个结构:

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.

有什么想法吗?

2 个答案:

答案 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)