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

17 visualizaciones (últimos 30 días)
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.

Respuesta aceptada

Voss
Voss el 23 de Sept. de 2021
Look into cellfun. You can likely do this:
X_max = cellfun(@(y)max(y(:)),X);
  2 comentarios
Niraj Bal Tamang
Niraj Bal Tamang el 23 de Sept. de 2021
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 el 27 de Sept. de 2021
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{:}];

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Matrices and Arrays en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by