In my for loop I am trying to build a vector from local variables. But something weird is happening. When I build my vector I expect it to contain 3 doubles (1x3). But instead it contains hundreds doubles (1x1XX).
What the heck is going wrong? Am I misunderstanding m's scope or vector building?
for i=0:ncols
  for j=0:nrows
    ...
    roi = imcrop(img, [cx, cy, cw, ch]);
    %Extract 3 channels
    red = roi(:,:,1);
    green = roi(:,:,2);
    blue = roi(:,:,3);
    %Get most frequent colour
    [freqR, f, c] = mode(red);
    [freqG, f, c] = mode(green);
    [freqB, f, c] = mode(blue);
    freqR = double(freqR) / 255;
    freqG = double(freqG) / 255;
    freqB = double(freqB) / 255;
    %ERROR OCCURS ON BELOW LINE
    %Build vector representing most common colour in cell
    col = [freqR,  freqG,  freqB];
    %Intended usage of col 
    rectangle('Position', [cx, cy, cw, ch], 'EdgeColor', col, 'LineWidth', 3, 'LineStyle','-');
  endfor
endfor
				
                        
mode,and some other functions in MATLAB, if applied to an array, return the result along the dimension provided as the second input to the function if is not provided it defaults to the first dimension.When you writemode(red)it is the same asmode(red, 1).So you need to convert the matrix to a column vector: