hi i have 1x36 cell,each cell contains 7x7 double, i need to divide each 7x7 equally into 4 halves and find max value in each halves,likewise for all 36 cells

10 visualizaciones (últimos 30 días)
help me with matlab code
  4 comentarios
kaavya subramani
kaavya subramani el 22 de Nov. de 2016
for eg=[1 2 3 4 5;6 7 8 9 10;1 12 13 14 15;16 17 18 19 20] my fist part contains [1 2 3 6 7 8],2nd part=[4 5 9 10],3rd part=[11 12 13 16 17 18],4th=[14 15 19 20],i need to find max value of each part also

Iniciar sesión para comentar.

Respuesta aceptada

Guillaume
Guillaume el 22 de Nov. de 2016
Editada: Guillaume el 22 de Nov. de 2016
yourcellarray = arrayfun(@(~) randi(20, 7), 1:36, 'UniformOutput', false) %demo data
cellfun(@(m) cellfun(@(quadrant) max(quadrant(:)), ... max of a quadrant
mat2cell(m, ... convert matrix in cell into cell of 4 quadrant
[ceil(size(m, 1)/2), floor(size(m, 1)/2)], ...
[ceil(size(m, 2)/2), floor(size(m, 2)/2)])), ...
yourcellarray, 'UniformOutput', false) %process each cell
edit: removed the 'UniformOutput', false from the inner cellfun since it's actually not needed. The output is thus a 1x36 cell array of 2x2 matrix instead of a 1x36 cell array of 2x2 cell arrays of scalars.

Más respuestas (2)

KSSV
KSSV el 22 de Nov. de 2016
clc; clear all ;
A = cell(1,36) ;
for i = 1:36
A{i} = rand(7) ;
end
%
B = cell(1,36) ;
for i = 1:36
A1 = NaN(8) ;
A1(1:7,1:7) = A{i} ;
% split to equal parts like +
A2(:,:,1) = A1(1:4,1:4) ;
A2(:,:,2) = A1(1:4,5:8) ;
A2(:,:,3) = A1(5:8,1:4) ;
A2(:,:,4) = A1(5:8,5:8) ;
% get maximum
B{i} = max(A2,[],3) ;
end
  2 comentarios
kaavya subramani
kaavya subramani el 22 de Nov. de 2016
Thanks a lot sir,but i didnt get max value as per your code,also plz mention where to apply my data, in your code

Iniciar sesión para comentar.


Bhanushnkar Gedela
Bhanushnkar Gedela el 15 de Mzo. de 2019
how to split the 16*64 matrix into 4 16*16 matrices

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by