构建 3 列向量会导致 157 列向量?

Building a 3 column vector results in a 157 column vector instead?

在我的 for 循环中,我试图从局部变量构建一个向量。但是奇怪的事情正在发生。当我构建我的向量时,我希望它包含 3 个双精度数 (1x3)。但它包含数百个双打 (1x1XX)。

到底出了什么问题?我是否误解了 m 的范围或矢量构建?

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 和 MATLAB 中的一些其他函数,如果应用于数组,return 沿维度的结果作为函数的第二个输入提供,如果未提供,则默认为首先dimension.When你写mode(red)mode(red, 1)是一样的。

因此需要将矩阵转换为列向量:

[freqR, f, c] = mode(red(:));