Minimum for different sized cell arrays

2 ビュー (過去 30 日間)
Joseph Lee
Joseph Lee 2017 年 11 月 23 日
編集済み: Joseph Lee 2017 年 11 月 23 日
How do i find minimum value from indexing, it is simple for a matrix but how to do the same for different cells?
x & y are same sized
For matrix
x=10*rand(10,1300);
y=100*rand(10,1300);
idx=find(abs(x-1<0.005));
miny=min(y(idx))
For different sized cell arrays,
x&y= 10x1300 cell array containing the same different sized cells. Both are
Columns 1297 through 1300
[1×23 double] [1×29 double] [1×23 double] [1×25 double]
[1×25 double] [1×25 double] [1×25 double] [1×27 double]
[1×25 double] [1×27 double] [1×27 double] [1×25 double]
[1×29 double] [1×29 double] [1×25 double] [1×23 double]
[1×25 double] [1×23 double] [1×27 double] [1×27 double]
[1×27 double] [1×23 double] [1×21 double] [1×23 double]
[1×29 double] [1×27 double] [1×27 double] [1×27 double]
[1×21 double] [1×21 double] [1×29 double] [1×27 double]
[1×25 double] [1×25 double] [1×21 double] [1×27 double]
[1×25 double] [1×25 double] [1×25 double] [1×23 double]
index=cellfun( @(X) find(abs(X-1)<0.005), x, 'uniform', 0);
index results Columns 1297 through 1300, Index returns some zero cells.
[1×0 double] [1×0 double] [1×0 double] [1×0 double]
[1×0 double] [1×0 double] [1×0 double] [1×0 double]
[ 25] [1×2 double] [1×2 double] [1×2 double]
[1×2 double] [1×2 double] [1×2 double] [1×2 double]
[1×2 double] [1×2 double] [1×2 double] [1×2 double]
[1×0 double] [1×0 double] [1×2 double] [1×2 double]
[1×0 double] [1×0 double] [1×0 double] [1×0 double]
[1×0 double] [1×0 double] [1×0 double] [1×0 double]
[1×0 double] [1×0 double] [1×0 double] [1×0 double]
[1×0 double] [1×0 double] [1×0 double] [1×0 double]
How do i do the same to find the min as for a matrix, miny=min(y(idx)), a single value result.
  1 件のコメント
Joseph Lee
Joseph Lee 2017 年 11 月 23 日
Having error.
miny = min (cellfun( @(Y) Y(index),y,'uniform', 0)) ;
Function 'subsindex' is not defined for values of class 'cell'.

サインインしてコメントする。

採用された回答

Walter Roberson
Walter Roberson 2017 年 11 月 23 日
To get the overall minima over a cell array without caring what the position is,
min( [YourArrayName{:}] )
  3 件のコメント
Walter Roberson
Walter Roberson 2017 年 11 月 23 日
min( cell2mat( cellfun(@(Y, IDX) Y(IDX), y, index, 'uniform', 0) ) )
Joseph Lee
Joseph Lee 2017 年 11 月 23 日
編集済み: Joseph Lee 2017 年 11 月 23 日
thanks, ( cellfun(@(Y, IDX) Y(IDX), y, index, 'uniform', 0) ) worked
but there is an error with cell2mat, might be due to the zeros
Error using cat Dimensions of matrices being concatenated are not consistent.
Error in cell2mat (line 78)
m = cat(1,m{:});
Result from ( cellfun(@(Y, IDX) Y(IDX), y, index, 'uniform', 0)
[1×0 double] [1×0 double] [1×0 double] [1×0 double] [1×0 double] [1×0 double] [1×0 double] [1×0 double]
[1×2 double] [1×2 double] [1×0 double] [1×2 double] [1×2 double] [ -199.8062] [1×2 double] [1×2 double]
[1×2 double] [1×2 double] [1×2 double] [1×2 double] [1×2 double] [1×2 double] [1×2 double] [1×2 double]
[1×2 double] [1×2 double] [1×2 double] [1×2 double] [1×2 double] [1×2 double] [1×2 double] [1×2 double]
[1×0 double] [ -199.7778] [1×2 double] [1×0 double] [1×0 double] [1×0 double] [1×0 double] [1×0 double]
[1×0 double] [1×0 double] [1×0 double] [1×0 double] [1×0 double] [1×0 double] [1×0 double] [1×0 double]
[1×0 double] [1×0 double] [1×0 double] [1×0 double] [1×0 double] [1×0 double] [1×0 double] [1×0 double]
[1×0 double] [1×0 double] [1×0 double] [1×0 double] [1×0 double] [1×0 double] [1×0 double] [1×0 double]
[1×0 double] [1×0 double] [1×0 double] [1×0 double] [1×0 double] [1×0 double] [1×0 double] [1×0 double]
[1×0 double] [1×0 double] [1×0 double] [1×0 double] [1×0 double] [1×0 double] [1×0 double] [1×0 double]
Columns 1297 through 1300
[1×0 double] [1×0 double] [1×0 double] [1×0 double]
[1×2 double] [1×2 double] [1×2 double] [1×2 double]
[1×2 double] [1×2 double] [1×2 double] [1×2 double]
[1×2 double] [1×2 double] [1×2 double] [1×2 double]
[1×0 double] [1×2 double] [1×0 double] [1×0 double]
[1×0 double] [1×0 double] [1×0 double] [1×0 double]
[1×0 double] [1×0 double] [1×0 double] [1×0 double]
[1×0 double] [1×0 double] [1×0 double] [1×0 double]
[1×0 double] [1×0 double] [1×0 double] [1×0 double]
[1×0 double] [1×0 double] [1×0 double] [1×0 double]

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeAxis Labels についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by