MATLAB Answers

1

Trouble calculating column mean from a matrix - using different indices for each row

Asked by David McVea on 16 Oct 2019 at 21:15
Latest activity Commented on by Matt J
on 17 Oct 2019 at 4:57
Hello,
I am trying to calculate a column of means from a 2-D matrix. The length of the mean is equally to the number of rows of the matrix.
However, the index to each row is different. For example, row 1 I want the mean of colums 4 to 8. Row 2 I want the means of columns 3 to 5.
I have tried
mean(myMatrix(:,VariableIndex1:VaribleIndex2))
Where VariableIndex1 and VariableIndex2 are columns for the start and end indices of the columns I need means from
For the example above this would be:
mean(myMatrix(:,[4;3]:[3:5]))
- but this seems to give a non-sensical result.
Any thoughts or advice on how to do this? The column acutally has 100 000 rows so I don't want to loop through it.
Thanks.

  0 Comments

Sign in to comment.

Products


Release

R2018b

1 Answer

Answer by Matt J
on 16 Oct 2019 at 21:22
Edited by Matt J
on 17 Oct 2019 at 4:56
 Accepted Answer

[m,n]=size(myMatrix); %Edited
e=1:n;
mask=VariableIndex1(:)<=e & e<=VariableIndex2(:);
result=sum(myMatrix.*mask,2)./sum(mask,2);

  2 Comments

Hi - perfect, thanks. Except note the first line should be
[m,n]=size(myMatrix);

Sign in to comment.