##雙精度實數型的求和--用mextest函式實現##
#include "mex.h"
#define x_in 0
#define y_out 0
/*求和子程式*/
extern
int dp_sum(const
int n, const
double* x)
return sum;
}/*計算子程式*/
extern
void mextest(const
int ndims_x, const
int * dims_x, const
double* x, double *y)
else
if (dims_x[1] == 1)
else
y[j] = dp_sum(dims_x[0], temp);}}
}/*計算三維矩陣*/
else
if (ndims_x == 3)
y[j +k*dims_x[1]] = dp_sum(dims_x[0], temp);}}
}mxfree(temp);
}/*介面子程式*/
void mexfunction(
int nlhs,
mxarray *plhs,
int nrhs,
mxarray *prhs
)else
if (nlhs > 1)
//mrows = mxgetm(prhs[0]);//輸入必須是非複數的雙精度數;
//mcols = mxgetn(prhs[0]);
if (!mxisdouble(prhs[x_in]) || mxiscomplex(prhs[x_in]))
// plhs[0] = mxcreatdoublematrix(mrows, ncols, mxreal);
//x = mxgetpr(prhs[0]);//獲得輸入引數的指標;
//y = mxgetpr(plhs[0]);
//呼叫子程式:
// timetwo(y, x);//以輸入引數和輸出引數的指標。作為實參,
ndims_x = mxgetnumberofdimensions(prhs[x_in]);
dims_x =(int *)mxgetdimensions(prhs[x_in]);
////mx = mxgetm(prhs[x_in]);
////nx = mxgetn(prhs[x_in]);
////my = mxgetm(prhs[y_in]);
////ny = mxgetn(prhs[y_in]);
ndims_y = ndims_x;
dims_y = (int *)mxcalloc(ndims_y, sizeof(int));
if (ndims_y == 2)
else
dims_y[0] = my;
dims_y[1] = ny;
}else
if (ndims_y == 3)
plhs[y_out] = mxcreatenumericarray(ndims_y,dims_y, mxdouble_class, mxreal);
x = mxgetpr(prhs[x_in]);
y = mxgetpr(plhs[y_out]);
mextest(ndims_x, dims_x, x, y);
return;
//if (mx != 1 || my != 1)
////mz = 1;
//nz = nx + ny - 1;
//plhs[z_out] = mxcreatdoublematrix(mz, nz, mxreal);
//x = mxgetpr(prhs[x_in]);
//y = mxgetpr(plhs[y_in]);
//z = mxgetpr(plhs[z_out]);
//dv_convec(x, nx, y, ny, z);
//return 0;
}
## 編譯 ##
>> mex mextest.cpp
building with
'microsoft visual c++ 2013 professional'.
mex completed successfully.
## 1)行向量測試: ##
>> clear all
>> x=rand(1,4);
>> y1=sum(x)
y1 =
1.5553
>> y2=mextest(x)
y2 =
1
## 2)列向量測試: ##
>> clear all
>> x=rand(4,1);
>> y1=sum(x)
y1 =
2.3847
>> y2=mextest(x)
y2 =
2
##3)矩陣測試:##
>> clear all
>> x=rand(4,4);
>> y1=sum(x)
y1 =
3.0892
2.4746
2.5718
1.5645
>> y2=mextest(x)
y2 =
2222
##4)三維陣列測試:##
>> clear all
>> x=rand(4,4);
>> y1=sum(x)
y1 =
3.0892
2.4746
2.5718
1.5645
>> y2=mextest(x)
y2 =
2222
MATLAB版本更新歷程
20世紀70年代,美國新墨西哥大學電腦科學系主任cleve moler為了減輕學生程式設計的負擔,用fortran編寫了最早的matlab。1984年由little moler steve bangert合作成立了的mathworks公司正式把matlab推向市場。版本編號 建造編號 發布時間 ma...
MATLAB 的發展歷程和影響
matlab 的發展歷程和影響 matlab 名字由matrix 和 laboratory 兩詞的前三個字母組合而成。那是20 世紀七 十年代後期的事 時任美國新墨西哥大學電腦科學系主任的cleve moler 教授出於減輕學 生程式設計負擔的動機,為學生設計了一組呼叫linpack 和eispac...
minix學習歷程
note 以下所有操作都是在fedora core 5下完成的 bochs的安裝和使用 如何在bochs下利用root.mnx和usr.mnx啟動minix204 步驟 部分 最好通讀真個檔案 c.為了在bochs 下啟動minix204 我們只需要將a 步驟中的intel 2.0.4 i386 下...