MATLAB: IF loop to select values superior of a threshold in a matrix

if loopif statementMATLAB

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

Best Answer

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.