2017-09-16 3 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(:)); 
関連する問題