建立一个3列向量导致157列向量?
问题描述:
在我for循环中,我试图从局部变量中构建一个向量。但有些奇怪的事情正在发生。当我构建我的矢量时,我预计它会包含3个双打(1x3)。但相反,它包含数百个双打(1x1XX)。建立一个3列向量导致157列向量?
这是怎么回事?我误解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一些其它功能,如果施加到一个数组,返回沿着与第二输入到该函数提供的尺寸的结果,如果没有设置默认为你写的第一dimension.When mode(red)
与mode(red, 1)
相同。
所以,你需要的矩阵转换成列向量:
[freqR, f, c] = mode(red(:));