Extracting a matrix element which is within a cell containing cells.
5 次查看(过去 30 天)
显示 更早的评论
Hi everybody.
I have a cell contaning cells, within each inner cell there is a matrix. By the way the aforementioned cell is attached. Now the question is that i want to extract the maximum value of a desired element of matrices. I have written a code, but does not seem to be an efficient one. does any can help me to make it more vectorized?
Thanks for your attention.
clc, clear, close all
% Loading mat file.
load('Sample.mat')
% Desired row and column.
Row = 5;
Col = 7;
% Preallocation.
Extracted = cell(length(Sample), 1);
Extracted(:) = {cell(12, 1)};
for yr = 1:length(Sample)
for m = 1:12
Extracted{yr,1}{m,1} = Sample{yr}{m}(Row,Col);
end
end
% Finally converting cell to multidimensional array.
Extracted = cell2mat(cat(3,Extracted{:}));
% Finding max of all pages.
FinalOutput = max(max(Extracted, [], 3));
3 个评论
Rik
2021-3-16
If you click on 'Problem' that will take you to a breakdown of the runtime of that function where you can see which lines take the most time.
采纳的回答
Stephen23
2021-3-16
编辑:Stephen23
2021-3-16
Putting scalar numeric data into nested cell arrays is pointlessly complex and inefficient. Get rid of the cell arrays:
S = load('Sample.mat');
% Desired row and column.
Row = 5;
Col = 7;
% Preallocation of one numeric matrix:
N = numel(S.Sample);
M = nan(N,12);
for yr = 1:N
for m = 1:12
M(yr,m) = S.Sample{yr}{m}(Row,Col);
end
end
max(M(:))
The storage of the original data would also be improved by not using nested cell arrays.
更多回答(0 个)
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!