minimum of different sized cell arrays using cell2mat error
1 次查看(过去 30 天)
显示 更早的评论
How do i find the overall minimum of a cell array, cell2mat gives error.
Y= {[100 200] [50 100] [20] [30 140];
[10 130] [40] [60 200] [30]};
min(cell2mat(Y))
Error using cat
Dimensions of matrices being concatenated are not consistent.
Error in cell2mat (line 78)
m = cat(1,m{:});
0 个评论
采纳的回答
Jos (10584)
2017-11-24
cell2mat fails because not all cells of Y are the same size. But you do not need this step to find the minimum:
Y= {[100 200] [50 100] [20] [30 140];
[10 130] [40] [60 200] [30]};
minC = cellfun(@(c) min([c(:) ; Inf]), Y) % get the minimum of each cell, added Inf to deal with empty cells
minY = min(minC(:)) % get the global minimum
更多回答(2 个)
Stephen23
2017-11-24
>> min([Y{:}])
ans = 10
1 个评论
Jos (10584)
2017-11-24
Nice. I thought of that too, but it will fail when some cells of Y are not row-vectors.
Jan
2017-11-24
The fast C-Mex function FEX: Cell2Vec converts the contents of the cell to a vector independent from the shapes of the cell elements:
Y = {[100 200] [50 100] [20] [30 140]; ...
[10 130] [40] [60 200] [30]};
C = Cell2Vec(Y);
min(C)
[Min, Max, MinIndex, MaxIndex, MinArg, MaxArg] = MinMaxElem(Y{:})
This searches the max and the indices also. NOTE: This is not faster than min and max of modern Matlab versions anymore. But perhaps more convenient for your case.
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!