将结构转换为矩阵 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)).';
请注意,所有这些都假设 sym
和 prob
中的数据实际上是相同的数据类型,因此能够放在同一个数组中,否则元胞数组是唯一的方法保留两个字段。
此外,您的代码生成了一个 1 x 1 元胞数组,因为您将数据 x.sym
包装在 1 x 1
元胞数组中。
另一种方法如下:
symVec = [x.sym(:)]
probVec = [x.prob(:)
你可以使用这个:
cell2mat(struct2cell(YourStructure))
有没有办法将结构(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)).';
请注意,所有这些都假设 sym
和 prob
中的数据实际上是相同的数据类型,因此能够放在同一个数组中,否则元胞数组是唯一的方法保留两个字段。
此外,您的代码生成了一个 1 x 1 元胞数组,因为您将数据 x.sym
包装在 1 x 1
元胞数组中。
另一种方法如下:
symVec = [x.sym(:)]
probVec = [x.prob(:)
你可以使用这个:
cell2mat(struct2cell(YourStructure))