将结构转换为矩阵 MATLAB

Convert struct to matrix MATLAB

有没有办法将结构(2 个字段,每个字段有 52 个变量)转换为矩阵 (2x52)?谢谢

struct:

    sym (1x53)
    prob (1x53)

我尝试了以下方法,得到了一个 1 x 1 元胞数组

symProb = reshape({x.sym}, size(53)); 

我也试过 struct2cell 也是一样的。

可能最简单的事情(因为它只有两个字段)是使用 cat

沿着第一个维度简单地连接它们
result = cat(1, x.sym, x.prob);

或者您可以只使用 [];

result = [x.sym; x.prob]

如果您想要更通用的解决方案,可以使用 struct2array 进行一些整形

result = reshape(struct2array(x), [], numel(x)).';

请注意,所有这些都假设 symprob 中的数据实际上是相同的数据类型,因此能够放在同一个数组中,否则元胞数组是唯一的方法保留两个字段。

此外,您的代码生成了一个 1 x 1 元胞数组,因为您将数据 x.sym 包装在 1 x 1 元胞数组中。

另一种方法如下:

symVec = [x.sym(:)]
probVec = [x.prob(:)

你可以使用这个:

cell2mat(struct2cell(YourStructure))