How to extract a matrix of values from cell array of cell arrays of structs
5 次查看(过去 30 天)
显示 更早的评论
I have an array of array of structs, and I'd like to extract the value 'metric' from each, into a simple matrix. cell2mat and other functions just gave me various errors, so I wrote the following give-up code. It works, but is there a better way?
msea = zeros(n1,n2);
for i=1:n1
for j=1:n2
msea(i,j)=mse{i}{j}.metric;
end
end
3 个评论
Bruno Luong
2024-2-29
Your data is not array of array of structs but cell array of cell array of structs. That's are not convenient to organize the data.
You might use for example 2D struct array if they have the same fields.
采纳的回答
Bruno Luong
2024-3-1
Generate data (Thanks Voss)
n1 = 3;
n2 = 4;
mse = cell(1,n1);
for ii = 1:n1
mse{ii} = cell(1,n2); % row vector
for jj = 1:n2
mse{ii}{jj} = struct('metric',ii+(jj-1)*n1);
end
end
Single line code
reshape([cell2mat(cat(1,mse{:})).metric],length(mse),[])
2 个评论
Bruno Luong
2024-3-1
移动:Bruno Luong
2024-3-1
I would first convert to struct array S
S = cell2mat(cat(1,mse{:}));
Then use S from now on and forget about mse.
metric_array = reshape([S.metric], size(S))
更多回答(1 个)
Walter Roberson
2024-2-28
移动:Walter Roberson
2024-2-28
msea = zeros(n1,n2);
for i=1:n1
msea(i,1:n2) = [mse{i}{1:n2}.metric];
end
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Matrix Indexing 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!