Azzera filtri
Azzera filtri

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

7 visualizzazioni (ultimi 30 giorni)
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 Commenti
Anom Sulardi
Anom Sulardi il 29 Giu 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

Accedi per commentare.

Risposta accettata

Stephen23
Stephen23 il 29 Giu 2020
>> a = 135500;
>> dx = 1000;
>> b = floor(a/dx)
b = 135
  4 Commenti
Anom Sulardi
Anom Sulardi il 29 Giu 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 il 1 Lug 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)

Accedi per commentare.

Più risposte (1)

bharath pro
bharath pro il 29 Giu 2020
Modificato: bharath pro il 29 Giu 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

Categorie

Scopri di più su Creating and Concatenating Matrices in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by