將Matlab陣列轉換為C語言樣式的維度

2021-10-14 12:54:15 字數 1187 閱讀 2971

目的:將matlab的陣列中按列儲存的資料以行*列的形式傳遞給c函式,為什麼會有這一問題?

因為matlab語言中的多維陣列儲存方式為列優先原則,內迴圈最好是列迴圈;而c語言中的多維陣列儲存方式為行優先原則,內迴圈最好是行迴圈。

函式命令:print2darray c語言中建立2維陣列

首先需要載入內建了該函式的庫——shrlibsample

if not(libisloaded('shrlibsample'))     %判斷有無載入,若無用addpath函式新增路徑

addpath(fullfile(matlabroot,'extern','examples','shrlib'))

loadlibrary('shrlibsample')

end

建立乙個4行3列的 matlab 陣列。

m = reshape(1:12,4,3)
1     5     9

2 6 10

3 7 11

4 8 12

calllib('shrlibsample','print2darray',m,4) %在shrlibsample庫中呼叫函式shrlibsample,輸入引數為m、4。
1         2         3

4 5 6

7 8 9

10 11 12

即matlab中陣列保證4行前提下按列重新排序,若引數為5,則第五行隨機數。

最後轉置 上述陣列 以獲得原來matlab中的4行3列陣列。

calllib('shrlibsample','print2darray',m',4)
1         5         9

2 6 10

3 7 11

4 8 12

注意**:這個函式是在原陣列格式下將行和列交換,與矩陣轉置不同,4行3列轉置後為3行4列。**

將類陣列轉換為陣列

一 利用陣列的slice方法 slice.call arguments 原理 array.prototype.slice的實現原理 array.prototype.slice function start,end var result new array start start 0 end end ...

C語言 將字元陣列轉換為字串

一般來說,函式返回的型別不能是乙個位址,所以說,如果你返回乙個位址,編譯器會給你警告,但是仍然會正確執行。但是如果你返回的是乙個unsiged char型別的陣列位址,那麼就有可能出現亂碼。如何解決返回unsigned char型別的陣列位址亂碼呢,經過嘗試找到乙個好方法,就是把這個陣列轉換為字串,...

matlab 將dcm檔案轉換為raw

醫學影象上常見的影象格式是dcm格式的,我也不是很了解,需要在後面的學習中繼續深入學習 我們的程式是以raw為輸入的,所以需要將dcm格式轉換為raw。找到存放dcm的資料夾 預設所有的切片都是在這裡,並且按名稱順序排好 獲取dcm檔案的數目以及單個dcm的長寬。然後遍歷所有的dcm檔案,將資料存到...