find the location of minimum value

2 visualizaciones (últimos 30 días)
Internazionale
Internazionale el 14 de Feb. de 2013
i have matrix with 4 variables, A=mintemp(a,b,c,d). i have find the minimum value especially at V=mintemp(:,:,1,1) dan the minimum value is out=min(V(:)). now, how to find the location / the coordinates the minimum value ?
if the matrix just two variables, i can the identify the coordinates with this :
A=magic(4);
out=min(A(:));
aa=1;
bb=1;
for xx=1:4
for yy=1:4
if(out==1)
aa=xx;
bb=yy;
end
end
end
i really have no idea if the matrix have 4 variables.
  1 comentario
Azzi Abdelmalek
Azzi Abdelmalek el 14 de Feb. de 2013
What is mintemp? and what do you mean by: the matrix have 4 variables.

Iniciar sesión para comentar.

Respuesta aceptada

Azzi Abdelmalek
Azzi Abdelmalek el 14 de Feb. de 2013
Editada: Azzi Abdelmalek el 14 de Feb. de 2013
Edit
A=rand(4,4,4,4)
[ii1,ii2,ii3,ii4]=size(A)
count=0
id=zeros(ii3*ii4,4);
for k=1:ii3
for p=1:ii4
count=count+1;
v=A(:,:,k,p);
[val,idx]=min(v(:));
[id1,id2]=ind2sub(size(v),idx);
minval(count)=val;
idx1(count)=id1;
idx2(count)=id2;
idx3(count)=k;
idx4(count)=p;
id(count,:)=[id1 id2 k p] % correspondant indices
end
end
  11 comentarios
Azzi Abdelmalek
Azzi Abdelmalek el 14 de Feb. de 2013
Editada: Azzi Abdelmalek el 14 de Feb. de 2013
Look at the edited answer. It's the variable id
Internazionale
Internazionale el 25 de Feb. de 2013
on the variable id [id1 id2 k p], next problem is, i want to make variable ei and fi.
ei = k-(id1*0.5) and fi = p-(id2*0.5). so the output is 64 value of ei and 64 value of fi.

Iniciar sesión para comentar.

Más respuestas (2)

Thorsten
Thorsten el 14 de Feb. de 2013
That's easy
X = rand(4, 4, 4, 4);
[val ind] = min(X(:));
  2 comentarios
Internazionale
Internazionale el 14 de Feb. de 2013
i mean the coordinates of the minimum value. so, after we find the minimum value, we must search the coordinates. i think the answer is, example mincoordinates=(1,2,1,4).
Thorsten
Thorsten el 14 de Feb. de 2013
Editada: Thorsten el 14 de Feb. de 2013
[i j k l] = ind2sub(size(X), ind);

Iniciar sesión para comentar.


Thorsten
Thorsten el 14 de Feb. de 2013
Editada: Thorsten el 14 de Feb. de 2013
R = rand(4,4,4,4);
for i = 1:size(R, 3)
for j = 1:size(R, 4)
[min_val(i, j) min_ind(i, j)] = min(flatten(R(:,:, i, j)));
[a b] = ind2sub(size(R), min_ind(i,j));
minserial(end+1, :) = [i j a b];
end
end
With the convenience function flatten defined as
function y = flatten(x)
y = x(:);

Categorías

Más información sobre Resizing and Reshaping Matrices en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by