以下介紹一個簡單的 C 程式碼,它可將一個輸入純量(資料型態為 double)乘以 2,此程式碼已內建在 MATLAB 光碟中,其位置為:
{MATLAB root}\extern\examples\refbook\timestwo.c
作者已在原程式碼加上詳細的中文註解,並改名為 scalarx2.c,更改後的 C 程式碼內容列出如下:
上面 scalarx2.c 程式碼均己附上豐富註解,故在此不再說明。接著在 MATLAB 中,呼叫 C 編譯器對 scalarx2.c 程式碼進行編譯如下:
>> mex scalarx2.c
編譯完後,確認可執行檔是否存在,可輸入如下:
>> which scalarx2
D:\matlabBook\MATLAB程式設計:進階篇\03-應用程式介面\scalarx2.mexw64
接著即可進行各項測試,可輸入如下:
>> scalarx2(8.5)
ans =
17
>> scalarx2('String input')
??? Input must be a scalar.
>> scalarx2([1 2 3])
??? Input must be a scalar.
若同時有 scalarx2.m 及 scalarx2.mexw64 存在於同一目錄下,MATLAB 會選用 scalarx2.mexw64 檔來執行,而忽略 scalarx2.m。但是如果輸入「help scalarx2」,MATLAB 會列出 scalarx2.m 的線上輔助說明(因為無法在 scalarx2.c 及 scalarx2.mexw64 擺置相關的線上輔助說明)。換句話說,有關 scalarx2.mexw64 的線上輔助說明,就必須置於 scalarx2.m 之內。例如我們可以顯示 scalarx2.m 的內容:
>> type scalarx2.m
function out = scalarx2(in)
% SCALARX2 A scalar version of "times two".
% This serves as an example of putting on-line help in an
% M-file, but the actual program body is in another MEX-file
% with the same major file name.
或顯示 scalarx2.m 的說明:
>> help scalarx2
SCALARX2 A scalar version of "times two".
This serves as an example of putting on-line help in an
M-file, but the actual program body is in another MEX-file
with the same major file name.
但若要進行執行時,我們可以使用 which 指令來顯示 scalarx2 所對應的執行檔案是 MEX 檔案而不是 M 檔案:
>> which scalarx2
D:\matlabBook\MATLAB程式設計:進階篇\03-應用程式介面\scalarx2.mexw64
MATLAB程式設計:進階篇