MATLAB: How to create a vector of ratios from columns in a matrix

arrayfor loopif statementMATLABmatrixmatrix manipulation

I need to determine the ratio of elements above 30 in each column of a matrix and save in a vector. My current code looks like this:
function output = ratiomatrix(a)
%address all rows, by each column do previous ratio
%but divide by number of elements in column
%probably do it inside for loop and put in vector
[rows,columns] = size(a); %gets number of rows and columns (divide by rows for ratios)
greater = 0; %initialise variable for loop
output = zeros(1,columns); %preallocate variable for greater speeeeeed
for i = 1:columns
for j = 1:rows
if a(j) > 30
greater = greater + 1;
output(i) = greater/rows;
end
end
%output(i) = greater/rows;
%greater = 0;
end
end
The problem i am currently having is that with each iteration, the value of greater includes the previous column and so gives my the wrong ratio. I have tried setting greater back to zero in a number of different places but this does not help. I would appreciate some hints as to how I might fix this, maybe without a complete answer if that's possible?

Best Answer

Since ‘a’ is a matrix, you likely have to use two subscripts to it in your if statement, not one.