如何将结构转换为矩阵

时间:2016-12-04 05:43:22

标签: matlab matlab-struct

我有一个10 x 10结构,有四个字段a,b,c,d。

如何将此结构转换为10 x 10矩阵,仅包含来自字段a的条目?

2 个答案:

答案 0 :(得分:2)

您可以依赖str.a返回comma-separated list的事实。因此,我们可以将值连接在一起,并将结果数组重新整形为与输入结构相同的大小。

% If a contains scalars
out = reshape([str.a], size(str));

% If a contains matrices
out = reshape({str.a}, size(str));

答案 1 :(得分:0)

单线解决方案

res = cellfun(@(strctObj) strctObj.a,str,'UniformOutput',false);

进一步说明

定义一个提取a值的单行函数。

getAFunc = @(strctObj) strctObj.a;

使用MATLAB的cellfun函数将其应用于您的单元格并提取矩阵:

res = cellfun(@(strctObj) getAFunc ,strctCellObj,'UniformOutput',false);

示例

%initializes input
N=10;
str = cell(N,N);
for t=1:N*N
  str{t}.a = rand; 
  str{t}.b = rand; 
  str{t}.c = rand; 
  str{t}.d = rand; 
end
%extracts output matrix
res = cellfun(@(strctObj) strctObj.a,str,'UniformOutput',false);