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!