通過創建單元陣列即backgroundSample{1}
,backgroundSample{2}
,...,backgroundSample{9}
的灰度圖像的background
的MATLAB代碼樣品部分。這裏halfRows
和halfCols
是圖像的一半大小。由於backgroundSample
是一個包含九個二維矩陣的數組,它讓我很困惑,如何在C/C++中編寫這段代碼。我可以使用類似backgroundSample[i].elements[m][n]
的東西獲得backgroundSample{i}
的元素嗎?書寫MATLAB陣列在C/C++
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;
編輯:
我們可以簡單地通過A = B
在MATLAB分配矩陣。舉個例子,backgroundSample{1} = background(60: 100, 60: 100)
在我的問題和這個任務是在i:1→3和j:1→3的循環中。但是,在C/C++中分配矩陣時,應該逐一分配每個元素。也許是這樣的:
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]
的指數之間的衝突。如何解決這個問題?
你想寫一個MEX文件,或者只是一個等效的C/C++程序? –
@EitanT我在寫一個等效的C/C++程序 – WangYudong
那麼究竟是什麼問題呢?聲明一個由9個指向2-D矩陣的指針組成的數組,併爲每個矩陣分配足夠的內存。訪問第_i_-th矩陣中的元素可能看起來像'backgroundSample [i] - > elements [j] [k]' –