MATLAB: Is it possible to use a function in a vectorization


is it at all possible to use function like sum, mean, or sqrt within a vectorization? for example
output(:,3) = sum([ output(:,1) output(:,2) ])
I know that in this case it is simple to just add the two columns without using sum, but I want to use several functions in a more complicated computation, however I can't even get this to work.

Best Answer

  • The colon operator is not defined for vectors. Therefore constantError(:,1)*16-15:constantError(:,1)*16 does not create the expected results. But I'm surprised, that it does not create an error.
    a = constantError(:,1)*16-15; % [1; 17; 33; 49; 65]
    b = constantError(:,1)*16; % [16; 32; 48; 64; 80]
    a:b % 1:16
    This is the same as a(1):b(1).
    But the problem can be solved easier and faster:
    sum(reshape(output(:, 1), 16, []), 1) / 16
    In addition I'm using sum()/n directly, which is faster than mean.