我有一个10 x 10结构,有四个字段a,b,c,d。
如何将此结构转换为10 x 10矩阵,仅包含来自字段a的条目?
答案 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);