2017-09-16 4 views
2

내 for 루프에서 로컬 변수에서 벡터를 작성하려고합니다. 그러나 이상한 일이 일어나고 있습니다. 내 벡터를 만들 때 3 배 (1x3)를 포함 할 것으로 기대합니다. 그러나 그 대신에 수백 배가됩니다 (1x1XX).3 열 벡터를 구축하면 대신 157 열 벡터가 생성됩니까?

도대체 잘못 된 것은 무엇입니까? 내가 오해이다 m 님의 범위 또는 벡터 건물? 만약 물품 제 dimension.When로 기본값을 제공하지 않는 경우

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 

답변

3

mode 및 MATLAB 일부 다른 기능, 어레이에 적용하는 경우, 함수의 제 2 입력으로 제공하는 차원에 따른 결과를 반환 mode(red)mode(red, 1)과 동일합니다.

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

그래서 당신은 열 벡터에 행렬을 변환해야