【问题标题】:Convert struct to matrix MATLAB将结构转换为矩阵 MATLAB
【发布时间】:2023-09-11 14:00:01
【问题描述】:
有没有办法将结构(2 个字段,每个字段 52 个变量)转换为矩阵(2x52)?谢谢
struct:
sym (1x53)
prob (1x53)
我尝试了以下方法,它给了我一个 1 x 1 单元格数组
symProb = reshape({x.sym}, size(53));
我也尝试过struct2cell,它也是如此。
【问题讨论】:
标签:
matlab
matrix
struct
matlab-struct
【解决方案1】:
可能最简单的事情(因为它只有两个字段)是使用cat 沿第一个维度简单地连接它们
result = cat(1, x.sym, x.prob);
或者你可以只使用[] 和;
result = [x.sym; x.prob]
如果您想要更通用的解决方案,您可以使用 struct2array 进行一些整形
result = reshape(struct2array(x), [], numel(x)).';
请注意,所有这些都假定sym 和prob 中的数据实际上是相同的数据类型,因此可以放置在同一个数组中,否则元胞数组是保存这两个字段的唯一方法。
此外,您的代码会生成一个 1 x 1 单元格数组,因为您将数据 x.sym inside 包装在 1 x 1 单元格数组中。
【解决方案2】:
另一种方法如下:
symVec = [x.sym(:)]
probVec = [x.prob(:)
【解决方案3】:
你可以用这个:
cell2mat(struct2cell(YourStructure))