herb001
2011-04-06, 10:53
求助:如何打印出二维数组元素
我用c写了个矩阵转置的接口函数,代码如下:
#include "mex.h"
void mexFunction(int nlhs, mxArray *plhs[], int nrhs,const mxArray *prhs[])
{
int rowNum,colNum,i,j;
double*p,*q;
if (nrhs!=1)
{
mexErrMsgTxt("参数个数不正确");
}
rowNum = mxGetM(prhs[0]);
colNum = mxGetN(prhs[0]);
p = mxGetPr(prhs[0]);
mexPrintf("\np[3]=%d",p[3]); plhs[0] = mxCreateDoubleMatrix(colNum, rowNum,mxREAL);
q = mxGetPr(plhs[0]);
for (i = 0; i< rowNum;i++)
{
for(j = 0; j<colNum;j++)
{
q[i*colNum+j] = p[j*rowNum+i];
}
}
}
我输入矩阵A = [1 2; 3 4; 5 6; 7 8],现调用该函数后想打印出p[3]的值(即想打印A(4,1)的值,发现结果出错,打印显示p[3]=0,正确结果应该是p[3]=7啊。请问是哪里出错了吗?
我用c写了个矩阵转置的接口函数,代码如下:
#include "mex.h"
void mexFunction(int nlhs, mxArray *plhs[], int nrhs,const mxArray *prhs[])
{
int rowNum,colNum,i,j;
double*p,*q;
if (nrhs!=1)
{
mexErrMsgTxt("参数个数不正确");
}
rowNum = mxGetM(prhs[0]);
colNum = mxGetN(prhs[0]);
p = mxGetPr(prhs[0]);
mexPrintf("\np[3]=%d",p[3]); plhs[0] = mxCreateDoubleMatrix(colNum, rowNum,mxREAL);
q = mxGetPr(plhs[0]);
for (i = 0; i< rowNum;i++)
{
for(j = 0; j<colNum;j++)
{
q[i*colNum+j] = p[j*rowNum+i];
}
}
}
我输入矩阵A = [1 2; 3 4; 5 6; 7 8],现调用该函数后想打印出p[3]的值(即想打印A(4,1)的值,发现结果出错,打印显示p[3]=0,正确结果应该是p[3]=7啊。请问是哪里出错了吗?