-1

MATLAB コードは、 、、 ... 、backgroundの cell 配列を作成することにより、グレースケール イメージの一部をサンプリングします。こことは、画像の半分のサイズです。backgroundSample{1}backgroundSample{2}backgroundSample{9}halfRowshalfCols

backgroundSampleは 9 つの 2 次元行列を含む配列です。このコードを C/C++ で記述する方法に戸惑いました。backgroundSample{i}のようなものを使用する要素を取得できますbackgroundSample[i].elements[m][n]か?

MATLAB コード:

offset = [-60, -20, 20, 60];  
for i = 1: 1: 3                             
    for j = 1: 1: 3
        backgroundSample{(i - 1) * 3 + j} = 
        background(halfRows + offset(i): halfRows + offset(i + 1), ...
                   halfCols + offset(j): halfCols + offset(j + 1));
    end;
end;

編集: MATLAB で
簡単に行列を割り当てることができるため。A = Bたとえば、backgroundSample{1} = background(60: 100, 60: 100)私の質問とこの割り当てでは、i: 1→3 と j: 1→3 のループにあります。ただし、C/C++ で行列を割り当てる場合は、すべての要素を 1 つずつ割り当てる必要があります。多分このように:

for(int i = 0; i < 3; i++)
    for(int j = 0; n < 3; j++)
        // to get every elements
        for(int m = 0 ...)
            for(int n = 0 ...)
                // not sure whether there is such usage of "->" in array
                backgroundSample[(i - 1) * 3 + j]->elements[m][n] =  background[i iteration][j iteration]

backgroundSample[m][n]そのため、行列とのインデックス間に競合がありbackground[i][j]ます。問題を解決するにはどうすればよいですか?

4

1 に答える 1