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.

到底是什么原因呢??
展开
 我来答
WM_THU
2014-02-03 · TA获得超过7163个赞
知道大有可为答主
回答量:4285
采纳率:80%
帮助的人:3879万
展开全部
为什么是double (*z)[2][2];呢?

定义一个double*的数组是什么用处?应该是double的数组才对。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式