What do you expect this line to do:
for i = l :length (img(:,:,1))
? The length() command replies the longer dimension of the matrix img(:, :, 1). So the loop runs either over the number of rows or columns of the matrix depending on what is longer.
The index i does not occur in your loop anywhere. So why do you use a loop at all?
You mention, that you have a problem, but not, what the problem is.
Why is using the command mean not possible?
What is the "mean vector" you want to calculate? You calculate the mean value of the green channel of an RGB image. But what is the problem?