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

18 visualizaciones (últimos 30 días)
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 comentarios
Anom Sulardi
Anom Sulardi el 29 de Jun. de 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

Iniciar sesión para comentar.

Respuesta aceptada

Stephen23
Stephen23 el 29 de Jun. de 2020
>> a = 135500;
>> dx = 1000;
>> b = floor(a/dx)
b = 135
  4 comentarios
Anom Sulardi
Anom Sulardi el 29 de Jun. de 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 el 1 de Jul. de 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)

Iniciar sesión para comentar.

Más respuestas (1)

bharath pro
bharath pro el 29 de Jun. de 2020
Editada: bharath pro el 29 de Jun. de 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

Categorías

Más información sobre Loops and Conditional Statements 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