Extracting a matrix element which is within a cell containing cells.
2 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
omid zandi
el 16 de Mzo. de 2021
Comentada: omid zandi
el 16 de Mzo. de 2021
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 comentarios
Rik
el 16 de Mzo. de 2021
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.
Respuesta aceptada
Stephen23
el 16 de Mzo. de 2021
Editada: Stephen23
el 16 de Mzo. de 2021
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.
Más respuestas (0)
Ver también
Categorías
Más información sobre Logical en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!