finding a minimum from multiple matricies
3 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Hi everybody, I have a few large matricies of equal size. At each location, I would like to find minimum and its index. Note, essentially an index in this case would correpsond to a particular matrix. Say I have two matricies first=[2 3 4] and second=[4 5 2] Then at location (1,1) the minimum would be 2 with index=1 as to correcpond to the first matrix. I am wondering if there is a way to do it without runing double for loop? Thanks!
1 Kommentar
Antworten (5)
Andrei Bobrov
am 17 Sep. 2012
Let your three matrices in 3D array M
M = randi(234,5,5,3); % initial array
[v,ii] = min(M,[],3);
0 Kommentare
Sean de Wolski
am 17 Sep. 2012
first=[2 3 4];
second=[4 5 2]
val = min(first,second);
idx = (second==val)+1
0 Kommentare
Azzi Abdelmalek
am 17 Sep. 2012
Bearbeitet: Azzi Abdelmalek
am 17 Sep. 2012
A={rand(4,5),rand(4,5),rand(4,5),rand(4,5)};
[c,idx1]=cellfun(@(x) min(x(:)),A)
[value,matnum]=min(c) % value = minimum and matnum= matrix number
idx=idx1(matnum)
nA=4 % nA, each matrix is nA x mA
n=mod(idx,nA)
if n==0
n==nA
end
m=ceil(idx/nA) % the location is (n,m)
0 Kommentare
Image Analyst
am 17 Sep. 2012
Bearbeitet: Image Analyst
am 17 Sep. 2012
Here's a demo for 4 small matrices. You can adapt it for more matrices, and for larger matrices:
format compact;
m1 = rand(5,5)
m2 = rand(5,5)
m3 = rand(5,5)
m4 = rand(5,5)
% Now we have our several "large" matrixes.
% Concatenate them
m3D = cat(3, m1, m2, m3, m4);
% Find the min and a map of what matrix it occurred in.
[min2DImage matrixWhereItOccurs] = min(m3D, [], 3)
Results:
m1 =
Columns 1 through 3
0.683715572408358 0.640717922965926 0.740032327987778
0.132082955713563 0.328814214756803 0.234826914747904
0.722724539656766 0.653812022595774 0.734957541696052
0.110353480642349 0.749131463103519 0.970598525086614
0.117492852151833 0.583185731454876 0.866930291751916
Columns 4 through 5
0.0862345298634963 0.789363943641905
0.366436616319199 0.367652918437877
0.369198804330018 0.206027859505195
0.685028472661609 0.0866665473955323
0.597941635383889 0.771933917099107
m2 =
Columns 1 through 3
0.20567452146476 0.48448037239818 0.237373019705579
0.388271631047802 0.151845525116267 0.530872257027928
0.551778531957227 0.781931966588002 0.0914987313394122
0.2289532520231 0.100606322362422 0.405315419880591
0.641940620399187 0.294066333758628 0.104846247115757
Columns 4 through 5
0.112283962156027 0.432484993970361
0.784427890743913 0.69475219461794
0.291570317906931 0.758099275289454
0.603533438750887 0.432642326147101
0.964422667215901 0.655498039803537
m3 =
Columns 1 through 3
0.109755050723052 0.487603775433924 0.673294914108653
0.933759848385332 0.768958264058869 0.429564459251853
0.187460806421687 0.396006745217875 0.451739234904736
0.266178838907639 0.272938794123691 0.609857169290216
0.797830260211597 0.037234634070328 0.0594032968582772
Columns 4 through 5
0.315811438338866 0.0923523387192016
0.772722130862935 0.00782029356933489
0.696432989006095 0.423109385164167
0.12533218110918 0.655573174937914
0.130151450389424 0.722922524692024
m4 =
Columns 1 through 3
0.531209293582439 0.0985940927109977 0.316428999146291
0.108817938273045 0.142027248431928 0.217563309422821
0.631766373528489 0.168251298491528 0.251041846015736
0.126499865329303 0.196248922256955 0.892922405285977
0.134303304313575 0.317479775149435 0.703223224556291
Columns 4 through 5
0.555737942719387 0.706715217696931
0.184433667757653 0.557788966754876
0.212030842532321 0.313428989936591
0.0773468081126768 0.166203562902151
0.913800410779568 0.622497259279895
min2DImage =
Columns 1 through 3
0.109755050723052 0.0985940927109977 0.237373019705579
0.108817938273045 0.142027248431928 0.217563309422821
0.187460806421687 0.168251298491528 0.0914987313394122
0.110353480642349 0.100606322362422 0.405315419880591
0.117492852151833 0.037234634070328 0.0594032968582772
Columns 4 through 5
0.0862345298634963 0.0923523387192016
0.184433667757653 0.00782029356933489
0.212030842532321 0.206027859505195
0.0773468081126768 0.0866665473955323
0.130151450389424 0.622497259279895
matrixWhereItOccurs =
3 4 2 1 3
4 4 4 4 3
3 4 2 4 1
1 2 2 4 1
1 3 3 3 4
0 Kommentare
Siehe auch
Kategorien
Mehr zu Distributed Arrays finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!