Matlab 调用C程序的问题(矩阵参数输入、输出),高手请进
网上的例子大部分是以标量作为参数的,如果以矢量矩阵作为输入输出参数,怎么办?照着网上查到的资料改了一下程序,两个矩阵输入,元素对应加,再输出,已知编译通不过,感觉错误应该...
网上的例子大部分是以标量作为参数的,如果以矢量矩阵作为输入输出参数,怎么办?照着网上查到的资料改了一下程序,两个矩阵输入,元素对应加,再输出,已知编译通不过,感觉错误应该不大,就是找不到,几乎所有的例子都是标量的,请高手指点,不胜感激
下面是代码
// add.c
#include "mex.h" // 使用MEX文件必须包含的头文件
// 执行具体工作的C函数
double add(double x[2][2], double y[2][2], double (*z)[2][2]) {
// return x+y;
(*z)[0][0]= x[0][0]+ y[0][0];
(*z)[0][1]= x[0][1]+ y[0][1];
(*z)[1][0]= x[1][0]+ y[1][0];
(*z)[1][1]= x[1][1]+ y[1][1];
}
// MEX文件接口函数
void mexFunction(
int nlhs,
mxArray *plhs[],
int nrhs,
const mxArray *prhs[]) {
double (*z)[2][2];
double b[2][2], c[2][2];
plhs[0] = mxCreateDoubleMatrix(2, 2, mxREAL);
z = mxGetPr(plhs[0]);
b = *(mxGetPr(prhs[0]));
c = *(mxGetPr(prhs[1]));
add(b, c, z);
}
错误提示如下
>> mex add1.c
add1.c
add1.c(20) : warning C4047: '=' : 'double (*)[2][2]' differs in levels of indirection from 'double *'
add1.c(21) : error C2115: '=' : incompatible types
add1.c(21) : error C2106: '=' : left operand must be l-value
add1.c(22) : error C2115: '=' : incompatible types
add1.c(22) : error C2106: '=' : left operand must be l-value
D:\PROGRAM FILES\MATLAB\R2006A\BIN\MEX.PL: Error: Compile of 'add1.c' failed.
到底是什么原因呢?? 展开
下面是代码
// add.c
#include "mex.h" // 使用MEX文件必须包含的头文件
// 执行具体工作的C函数
double add(double x[2][2], double y[2][2], double (*z)[2][2]) {
// return x+y;
(*z)[0][0]= x[0][0]+ y[0][0];
(*z)[0][1]= x[0][1]+ y[0][1];
(*z)[1][0]= x[1][0]+ y[1][0];
(*z)[1][1]= x[1][1]+ y[1][1];
}
// MEX文件接口函数
void mexFunction(
int nlhs,
mxArray *plhs[],
int nrhs,
const mxArray *prhs[]) {
double (*z)[2][2];
double b[2][2], c[2][2];
plhs[0] = mxCreateDoubleMatrix(2, 2, mxREAL);
z = mxGetPr(plhs[0]);
b = *(mxGetPr(prhs[0]));
c = *(mxGetPr(prhs[1]));
add(b, c, z);
}
错误提示如下
>> mex add1.c
add1.c
add1.c(20) : warning C4047: '=' : 'double (*)[2][2]' differs in levels of indirection from 'double *'
add1.c(21) : error C2115: '=' : incompatible types
add1.c(21) : error C2106: '=' : left operand must be l-value
add1.c(22) : error C2115: '=' : incompatible types
add1.c(22) : error C2106: '=' : left operand must be l-value
D:\PROGRAM FILES\MATLAB\R2006A\BIN\MEX.PL: Error: Compile of 'add1.c' failed.
到底是什么原因呢?? 展开
1个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询