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
2 ビュー (過去 30 日間)
古いコメントを表示
help me with matlab code
4 件のコメント
採用された回答
Guillaume
2016 年 11 月 22 日
編集済み: Guillaume
2016 年 11 月 22 日
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.
その他の回答 (2 件)
KSSV
2016 年 11 月 22 日
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 件のコメント
参考
カテゴリ
Help Center および File Exchange で Logical についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!