normalization of cell arrays

5 次查看(过去 30 天)
Hi
i want to normalize the values in a cell array called G
G is partitioned into 6 blocks (cell arrays) so i want to normalize each block separately (G{i,j}), each block is of size 128X128
Gmin = min((G(:)));
Gnorm = (G - Gmin) ./ (max(G1{:,:}) - Gmin);
i tried this:
Gmin(i,j)=min(G{i,j});
but i got this error:
??? Undefined function or method 'min' for input arguments of type 'cell'.
Error in ==> DOC at 124
Gmin(i,j)=min(G{i,j});
any suggestions please ???

采纳的回答

Walter Roberson
Walter Roberson 2012-1-6
Gmin = cellfun(@(M) min(M(:)), G, 'Uniform', 0);
Gmax = cellfun(@(M) max(M(:)), G, 'Uniform', 0);
Gnorm = cellfun(@(M,minM,maxM) (M-minM) ./ (maxM-minM)), G, Gmin, Gmax, 'Uniform', 0);
This relies on two uncommon usages:
  • deliberately returning a cell array when the results would fit in a vector
  • passing multiple cell arrays in to cellfun(), knowing that the corresponding elements will be extracted from each and passed to the function handle
There are other ways of coding this, such as using arrayfun()
  1 个评论
yasmine
yasmine 2012-1-6
unfortunately,i had this error:
??? Undefined function or method 'min' for input arguments of type 'cell'.
Error in ==> @(M)min(M(:))
Error in ==> DOC at 129
Gmin = cellfun(@(M) min(M(:)), G, 'Uniform', 0);

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Logical 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by