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

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일

1 개 추천

To get the overall minima over a cell array without caring what the position is,
min( [YourArrayName{:}] )

댓글 수: 3

Joseph Lee
Joseph Lee 2017년 11월 23일
편집: Walter Roberson 2017년 11월 23일
It requires the index first to get a set of Y values then get the overall minima from it without caring what the position is.
For a matrix it would be y(index) < gives a set of values
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개)

카테고리

도움말 센터File Exchange에서 Axis Labels에 대해 자세히 알아보기

질문:

2017년 11월 23일

편집:

2017년 11월 23일

Community Treasure Hunt

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

Start Hunting!

Translated by