将结构转换为矩阵MATLAB

Jes*_*par 0 matlab struct matrix matlab-struct

有没有一种方法可以将结构(2个字段,每个字段具有52个变量)转换为矩阵(2x52)?谢谢

struct:

    sym (1x53)
    prob (1x53)
Run Code Online (Sandbox Code Playgroud)

我尝试了以下方法,这给了我一个1 x 1的细胞阵列

symProb = reshape({x.sym}, size(53)); 
Run Code Online (Sandbox Code Playgroud)

我也尝试过struct2cell这样做。

Sue*_*ver 5

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

result = cat(1, x.sym, x.prob);
Run Code Online (Sandbox Code Playgroud)

或者您可以只使用[];

result = [x.sym; x.prob]
Run Code Online (Sandbox Code Playgroud)

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

result = reshape(struct2array(x), [], numel(x)).';
Run Code Online (Sandbox Code Playgroud)

请注意,所有这些假设中的数据symprob实际上是相同的数据类型,因此能够被放置在同一阵列内,否则单元阵列是拿这两个领域的唯一途径。

另外你的代码产生1×1单元阵列,因为你包装你的数据x.sym 一个的1 x 1单元阵列。