find the location of minimum value

3 vues (au cours des 30 derniers jours)
Internazionale
Internazionale le 14 Fév 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 commentaire
Azzi Abdelmalek
Azzi Abdelmalek le 14 Fév 2013
What is mintemp? and what do you mean by: the matrix have 4 variables.

Connectez-vous pour commenter.

Réponse acceptée

Azzi Abdelmalek
Azzi Abdelmalek le 14 Fév 2013
Modifié(e) : Azzi Abdelmalek le 14 Fév 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 commentaires
Azzi Abdelmalek
Azzi Abdelmalek le 14 Fév 2013
Modifié(e) : Azzi Abdelmalek le 14 Fév 2013
Look at the edited answer. It's the variable id
Internazionale
Internazionale le 25 Fév 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.

Connectez-vous pour commenter.

Plus de réponses (2)

Thorsten
Thorsten le 14 Fév 2013
That's easy
X = rand(4, 4, 4, 4);
[val ind] = min(X(:));
  2 commentaires
Internazionale
Internazionale le 14 Fév 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 le 14 Fév 2013
Modifié(e) : Thorsten le 14 Fév 2013
[i j k l] = ind2sub(size(X), ind);

Connectez-vous pour commenter.


Thorsten
Thorsten le 14 Fév 2013
Modifié(e) : Thorsten le 14 Fév 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(:);
  1 commentaire
Internazionale
Internazionale le 14 Fév 2013
matlab undefined variable minserial

Connectez-vous pour commenter.

Catégories

En savoir plus sur Resizing and Reshaping Matrices dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by