将struct转换为矩阵MATLAB

时间:2017-01-08 23:08:37

标签: matlab matrix struct matlab-struct

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

struct:

    sym (1x53)
    prob (1x53)

我尝试过以下操作,它给了我一个1 x 1的单元格数组

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

我也尝试过struct2cell同样的事情。

3 个答案:

答案 0 :(得分:4)

可能最简单的事情(因为它只有两个字段),只需使用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

答案 1 :(得分:0)

另一种方法如下:

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

答案 2 :(得分:0)

您可以使用此:

cell2mat(struct2cell(YourStructure))