Extracting the maximum value from each array of different dimensions in a cell?

22 次查看(过去 30 天)
I have a cell (X) with arrays of different dimensions. I want to create a new array containing only the maximum values of each array of the cell. I tried Y=[X{:}]; but it didn't work due to different dimensions of the arrays. Can anyone please help me to exract the maximum value from each array in the cell and create a new variable out of the extracted values.

采纳的回答

Voss
Voss 2021-9-23
Look into cellfun. You can likely do this:
X_max = cellfun(@(y)max(y(:)),X);
  2 个评论
Niraj Bal Tamang
Niraj Bal Tamang 2021-9-23
Thank you. But it didn't work. The cellfun worked when the dimensions of the array within the cell was same. Previously i tried Y=[X{:}]; which listed the elements of each array into cell columns. Then i applied the cellfun to Y. But in this case, it didn't work as the dimension was different for the arrays.
Voss
Voss 2021-9-27
Since each element of X is itself a cell array, you have to use cellfun twice. Try something like this:
X_max = cellfun(@(x)max(x(:)),cellfun(@(x)[x{:}],X,'UniformOutput',false),'UniformOutput',false);
Then X_max is a cell array containing the maximum value of each set of arrays forming an element of X, with empty entries where X{i} is a cell array with all empty vectors.
If you want X_max to contain some scalar value, say NaN, where X{i} is a cell array of all empty vectors, you can do something like this next:
X_max(cellfun(@(x)isempty(x),X_max)) = {NaN};
Then you can make X_max a numeric array if you want:
X_max = [X_max{:}];

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Matrices and Arrays 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by