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.
0 个评论
采纳的回答
Voss
2021-9-23
X_max = cellfun(@(y)max(y(:)),X);
2 个评论
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 Center 和 File Exchange 中查找有关 Matrices and Arrays 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!