IF loop to select values superior of a threshold in a matrix
    6 visualizzazioni (ultimi 30 giorni)
  
       Mostra commenti meno recenti
    
Hi all, 
For the matrix A (see attached), my goal is to calculate the mean of each row in the fifth column with the following conditions : 
If for the column 1 to 4, values are superior to 0,84 , calculate the mean of the four columns.
If for the column 1 to 4, values are not superior to 0,84 (for instance if column 3 = 0,76), calculate only the mean of the first, second and four columns.
I reach the loop for the first case but I'm not able to do that for the second case....
Here are the few lines I've started to write : 
for i=1:100
   if A(i,1:4)>0.85
     A(i,5)=mean(A(i,1:4));
   else if   (I have a doubt for this condition)
     A(i,1) or A(i,2) or A(i,3) or A(i,4) < 0,85 (I have a doubt for this line)
     ................................................................
   end
end
Thanks in advance for your help,
Louise
0 Commenti
Risposta accettata
  Jan
      
      
 il 11 Dic 2020
        
      Modificato: Jan
      
      
 il 11 Dic 2020
  
      for k = 1:100
    match   = (A(k, 1:4) > 0.85);
    A(k, 5) = sum(A(k, match)) / sum(match);
end
This works faster without a loop:
match   = (A(:, 1:4) > 0.85);
A(:, 5) = sum(A(:, 1:4) .* match, 2) ./ sum(match);  % Auto-expand, >= Matlab R2016b
Note that "if A(i,1:4)>0.85" might not do, what you expect. The condition of a if statement must be a scalar. So Matlab inserts an all() command implicitely.
Più risposte (0)
Vedere anche
Categorie
				Scopri di più su Loops and Conditional Statements in Help Center e File Exchange
			
	Prodotti
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

