用 Matlab 寫 MEX 函數加速 vol.3
上一篇在講怎麼處理 output
這一篇我們來看看怎麼處理 input
圍繞著整個主題, C-style 和 Fortran-style 之間的轉換
是看懂這些程式的關鍵
outline
* 辨識有多少個輸入變數
* 讀取輸入變數的內容
----
直接從一個 example 開始吧
把檔案取名為 test_input.c
編譯
mex test_input.c
並且執行以下指令, 觀察結果
test_input(1)
test_input(1, 2, 3)
test_input(1, 2, 3, 4, 6)
這個做完以後, 應該可以看出 nrhs 這個變數的意義
先用這個簡單的例子當做開場
----
接下來, 設計一組簡單的輸入...
input = zeros(2, 5)
input(1, :) = 1:5
input(2, :) = 5:-1:1
如此 input = [ 1 2 3 4 5
5 4 3 2 1]
我想設計一個 MEX-function
讀取並印出第一個 row, 其次是第二個 row
注意在下面的程式裡
mxGetM() 取得 Matrix 有幾個 row
mxGetN() 取得 Matrix 有幾個 column
程式不困難, 有任何問題打 helpwin 配上 search
函數名稱打進去都看得到使用說明
----
這一篇我們來看看怎麼處理 input
圍繞著整個主題, C-style 和 Fortran-style 之間的轉換
是看懂這些程式的關鍵
outline
* 辨識有多少個輸入變數
* 讀取輸入變數的內容
----
直接從一個 example 開始吧
把檔案取名為 test_input.c
編譯
mex test_input.c
並且執行以下指令, 觀察結果
test_input(1)
test_input(1, 2, 3)
test_input(1, 2, 3, 4, 6)
這個做完以後, 應該可以看出 nrhs 這個變數的意義
先用這個簡單的例子當做開場
----
接下來, 設計一組簡單的輸入...
input = zeros(2, 5)
input(1, :) = 1:5
input(2, :) = 5:-1:1
如此 input = [ 1 2 3 4 5
5 4 3 2 1]
我想設計一個 MEX-function
讀取並印出第一個 row, 其次是第二個 row
注意在下面的程式裡
mxGetM() 取得 Matrix 有幾個 row
mxGetN() 取得 Matrix 有幾個 column
程式不困難, 有任何問題打 helpwin 配上 search
函數名稱打進去都看得到使用說明
----
留言