How to find minimum value from loop using if function iteration?

20 vues (au cours des 30 derniers jours)
Anom Sulardi
Anom Sulardi le 29 Juin 2020
Commenté : Stephen23 le 1 Juil 2020
I have a=6.5, I would like to define "if function" inside the "for loop", for i=1:10, it will do the loop imin < a < imax, and if the "if function" is correct, I would like to use the b= imin (in which the a function is correct).
My expectation toward the code is b=6. Since the 6.5 is in between number for loop 6 and 7. And I want to use 6 (imin where the a is in correct statemen for if function)
How do I code that in matlab?
a=6.5;
for i=1:10
imin=i;
imax=imin+1
if imin<a<imax
b=imin;
end
if imax==10;
end
end
  2 commentaires
Anom Sulardi
Anom Sulardi le 29 Juin 2020
Hi Stephen,
Thank you for the answer. But, how if in the case of hundred thousand. I can not use floor() function for it. Otherwise, I still need to use if function inside for loop, if it is possible?
For example:
From below code, I expect to have b value in 135, since a is between 135000 and 136000. and b=imin/dx=135.
a=135500;
dx=1000;
for i=1:10
imin=i*dx;
imax=imin+dx
if imin<a<imax
b=imin/dx;
end
if imax==10;
end
end

Connectez-vous pour commenter.

Réponse acceptée

Stephen23
Stephen23 le 29 Juin 2020
>> a = 135500;
>> dx = 1000;
>> b = floor(a/dx)
b = 135
  4 commentaires
Anom Sulardi
Anom Sulardi le 29 Juin 2020
Hi Stephen,
Thank you so much. That's really help me a lot.
However, I have another problem. How can I indexing 4-D array matrix by using 2-d or 3-d array?
Let say, I want to index the 4-D matrix A with the A(3,5,7,10) and A(4,6,8,10). However, the first, second, and third array on indexing is exist inside the matrix a,b,c. Can matlab do this?
I try to use diag(C), but it doesn't work well.
A=rand(10,10,10,10);
a=[3;4];b=[5,6];c=[7,8];
C=A(a,b,c,10);
Stephen23
Stephen23 le 1 Juil 2020
Use sub2ind:
A = rand(10,10,10,10);
a = [3,4];
b = [5,6];
c = [7,8];
X = sub2ind(size(A),a,b,c,[10,10]);
C = A(X)

Connectez-vous pour commenter.

Plus de réponses (1)

bharath pro
bharath pro le 29 Juin 2020
Modifié(e) : bharath pro le 29 Juin 2020

Instead of using imin<a<imax, try using an intersection of two commands for checking less than and greater than seperatly.

a=6.5;
for i=1:10
    imin=i;
    imax=imin+1
    if (imin<a)&&(a<imax)
        b=imin;
    end
    if imax==10;
    end
end

This will give the output as 6

Catégories

En savoir plus sur Creating and Concatenating 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