构建 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(:));
在我的 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(:));