Setting limits using If statements

8 vues (au cours des 30 derniers jours)
JR
JR le 11 Juil 2017
Commenté : KSSV le 11 Juil 2017
Consider a random matrix:
A=[1.8 2.6 3.4 4.0 7.2]
[0.5 0.4 0.3 0.2 0.1]
I want to write a code that scans through A and does something if some conditions against parameters P1 and P2 are satisfied. Could somebody help me convert my pseudo code into a MATLAB script.
-----------------------------------------------------------------------------------
Pseudocode
-----------------------------------------------------------------------------------
P1=3.5;
P2=0.39;
for i=1 : (number of rows)
if an element A(i,:) is greater than or equal to P1
store all the elements from A(i,:) that come before P1;
but if an element A(i,:) is less than or equal to P2
store all the elements from A(i,:) that comes before P2;
end if
end for
-----------------------------------------------------------------------------------
Expected Output:
StoredElements = [ 1.8 2.6 3.4 ]
[ 0.5 0.4 ]
-----------------------------------------------------------------------------------

Réponses (1)

KSSV
KSSV le 11 Juil 2017
This is pretty simple...you need not to run a loop. Read about find. http://in.mathworks.com/help/matlab/ref/find.html.
Also you can use the logical indexing. Ex..to get all the values in A which are less then or equal to p1..use
store = A(A(<=p1)
  2 commentaires
JR
JR le 11 Juil 2017
Thanks. It works if I write
store = A(A<P1)
but this will give me all the values in A that satiesfies the condition. What I want is to check it per row such that I tried writing my code this way:
store =A(1,:)(A(1,:)<P1)
But what I am getting is an error: Error: ()-indexing must appear last in an index expression.
KSSV
KSSV le 11 Juil 2017
To run that in first row use:
A(1,A(1,:)<=P1)

Connectez-vous pour commenter.

Catégories

En savoir plus sur Logical 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