MATLAB爱好者论坛-LabFans.com

MATLAB爱好者论坛-LabFans.com (https://www.labfans.com/bbs/index.php)
-   MATLAB论坛 (https://www.labfans.com/bbs/forumdisplay.php?f=6)
-   -   [MATLAB混合编程] 求助:如何打印二维数组元素 (https://www.labfans.com/bbs/showthread.php?t=13110)

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]);
[COLOR="Red"]mexPrintf("\np[3]=%d",p[3]);[/COLOR] 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啊。请问是哪里出错了吗?

libralibra 2011-04-09 22:14

回复: 求助:如何打印二维数组元素
 
你到底是要matlab的,还是c的

[B][COLOR="Red"]matlab的[/COLOR][/B]

[font=Consolas][u]Matlab语言[/u]:
[color=#000000]A[/color] [color=#000000]=[/color] [color=#000000][[/color][color=#000000]1 2[/color];[color=#000000] 3 4[/color];[color=#000000] 5 6[/color];[color=#000000] 7 8[/color][color=#000000]];[/color]
[color=#000000][[/color][color=#000000]m[/color][color=#000000],[/color]n[color=#000000]][/color] [color=#000000]=[/color] [color=#000000]size[/color]([color=#000000]A[/color]);
[color=#000000]fprintf[/color]([color=#000000]1[/color][color=#000000],[/color][color=#0000ff]'A=\n'[/color]);
[color=#000080]for[/color] [color=#000000]i[/color][color=#000000]=[/color][color=#000000]1[/color][color=#000000]:[/color][color=#000000]m[/color]
[color=#000080]for[/color] [color=#000000]j[/color][color=#000000]=[/color][color=#000000]1[/color][color=#000000]:[/color]n
[color=#000000]fprintf[/color]([color=#000000]1[/color][color=#000000],[/color][color=#0000ff]'%d\t'[/color][color=#000000],[/color][color=#000000]A[/color]([color=#000000]i[/color][color=#000000],[/color][color=#000000]j[/color]));
[color=#000080]end[/color]
[color=#000000]fprintf[/color]([color=#000000]1[/color][color=#000000],[/color][color=#0000ff]'\n'[/color]);
[color=#000080]end[/color]

[color=#000000]fprintf[/color]([color=#0000ff]'\n'[/color]);

[color=#000000]A[/color] [color=#000000]=[/color] [color=#000000]A[/color][color=#000000]'[/color];
[color=#000000][[/color][color=#000000]m[/color][color=#000000],[/color]n[color=#000000]][/color] [color=#000000]=[/color] [color=#000000]size[/color]([color=#000000]A[/color]);
[color=#000000]fprintf[/color]([color=#000000]1[/color][color=#000000],[/color][color=#0000ff]'A''=\n'[/color]);
[color=#000080]for[/color] [color=#000000]i[/color][color=#000000]=[/color][color=#000000]1[/color][color=#000000]:[/color][color=#000000]m[/color]
[color=#000080]for[/color] [color=#000000]j[/color][color=#000000]=[/color][color=#000000]1[/color][color=#000000]:[/color]n
[color=#000000]fprintf[/color]([color=#000000]1[/color][color=#000000],[/color][color=#0000ff]'%d\t'[/color][color=#000000],[/color][color=#000000]A[/color]([color=#000000]i[/color][color=#000000],[/color][color=#000000]j[/color]));
[color=#000080]end[/color]
[color=#000000]fprintf[/color]([color=#000000]1[/color][color=#000000],[/color][color=#0000ff]'\n'[/color]);
[color=#000080]end[/color]
[/font]

==============
[B][COLOR="Red"]C++的[/COLOR][/B]

[font=Consolas][u]C++语言[/u]:
[color=#000080]void[/color] [color=#000000]transMat[/color]([color=#000080]int[/color] [color=#000000]**[/color][color=#000000]a[/color][color=#000000],[/color] [color=#000080]int[/color] [color=#000000]**[/color]b[color=#000000],[/color] [color=#000080]int[/color] N[color=#000000],[/color] [color=#000080]int[/color] [color=#000000]M[/color])
[color=#000000]{[/color]
[color=#000080]for[/color] ([color=#000080]int[/color] [color=#000000]i[/color][color=#000000]=[/color][color=#0000ff]0[/color];[color=#000000]i[/color][color=#000000]<[/color]N;[color=#000000]i[/color][color=#000000]++[/color])
[color=#000080]for[/color] ([color=#000080]int[/color] [color=#000000]j[/color][color=#000000]=[/color][color=#0000ff]0[/color];[color=#000000]j[/color][color=#000000]<[/color][color=#000000]M[/color];[color=#000000]j[/color][color=#000000]++[/color])
[color=#000000]*[/color](([color=#000080]int[/color][color=#000000]*[/color])b[color=#000000]+[/color]N[color=#000000]*[/color][color=#000000]j[/color][color=#000000]+[/color][color=#000000]i[/color]) [color=#000000]=[/color] [color=#000000]*[/color](([color=#000080]int[/color][color=#000000]*[/color])[color=#000000]a[/color][color=#000000]+[/color][color=#000000]M[/color][color=#000000]*[/color][color=#000000]i[/color][color=#000000]+[/color][color=#000000]j[/color]);
[color=#000000]}[/color]
[/font]

[B][COLOR="Red"]调用[/COLOR][/B]

[font=Consolas][u]C++语言[/u]:
[color=#000080]int[/color] [color=#000000]main[/color]([color=#000080]int[/color] [color=#000000]argc[/color][color=#000000],[/color] [color=#000080]char[/color] [color=#000000]*[/color][color=#000000]argv[/color][color=#000000][])[/color]
[color=#000000]{[/color]
[color=#000080]int[/color] [color=#000000]A[/color][color=#000000][[/color][color=#0000ff]4[/color][color=#000000]][[/color][color=#0000ff]2[/color][color=#000000]][/color] [color=#000000]=[/color] [color=#000000]{{[/color][color=#0000ff]1[/color][color=#000000],[/color][color=#0000ff]2[/color][color=#000000]},{[/color][color=#0000ff]3[/color][color=#000000],[/color][color=#0000ff]4[/color][color=#000000]},{[/color][color=#0000ff]5[/color][color=#000000],[/color][color=#0000ff]6[/color][color=#000000]},{[/color][color=#0000ff]7[/color][color=#000000],[/color][color=#0000ff]8[/color][color=#000000]}};[/color]
[color=#000080]int[/color] B[color=#000000][[/color][color=#0000ff]2[/color][color=#000000]][[/color][color=#0000ff]4[/color][color=#000000]][/color] [color=#000000]=[/color] [color=#000000]{[/color][color=#0000ff]0[/color][color=#000000]};[/color]

[color=#000080]int[/color] N[color=#000000]=[/color][color=#0000ff]4[/color][color=#000000],[/color][color=#000000]M[/color][color=#000000]=[/color][color=#0000ff]2[/color];

[color=#000000]printf[/color]([color=#0000ff]"A=[/color][color=#0000ff]\n[/color][color=#0000ff]"[/color]);
[color=#000080]for[/color] ([color=#000080]int[/color] [color=#000000]i[/color][color=#000000]=[/color][color=#0000ff]0[/color];[color=#000000]i[/color][color=#000000]<[/color]N;[color=#000000]i[/color][color=#000000]++[/color])
[color=#000000]{[/color]
[color=#000080]for[/color] ([color=#000080]int[/color] [color=#000000]j[/color][color=#000000]=[/color][color=#0000ff]0[/color];[color=#000000]j[/color][color=#000000]<[/color][color=#000000]M[/color];[color=#000000]j[/color][color=#000000]++[/color])
[color=#000000]printf[/color]([color=#0000ff]"%d[/color][color=#0000ff]\t[/color][color=#0000ff]"[/color][color=#000000],[/color][color=#000000]A[/color][color=#000000][[/color][color=#000000]i[/color][color=#000000]][[/color][color=#000000]j[/color][color=#000000]]);[/color]
[color=#000000]printf[/color]([color=#0000ff]"[/color][color=#0000ff]\n[/color][color=#0000ff]"[/color]);
[color=#000000]}[/color]

[color=#000000]transMat[/color](([color=#000080]int[/color][color=#000000]**[/color])[color=#000000]A[/color][color=#000000],([/color][color=#000080]int[/color][color=#000000]**[/color])B[color=#000000],[/color]N[color=#000000],[/color][color=#000000]M[/color]);

[color=#000000]printf[/color]([color=#0000ff]"[/color][color=#0000ff]\n[/color][color=#0000ff]A'=[/color][color=#0000ff]\n[/color][color=#0000ff]"[/color]);
[color=#000080]for[/color] ([color=#000080]int[/color] [color=#000000]i[/color][color=#000000]=[/color][color=#0000ff]0[/color];[color=#000000]i[/color][color=#000000]<[/color][color=#000000]M[/color];[color=#000000]i[/color][color=#000000]++[/color])
[color=#000000]{[/color]
[color=#000080]for[/color] ([color=#000080]int[/color] [color=#000000]j[/color][color=#000000]=[/color][color=#0000ff]0[/color];[color=#000000]j[/color][color=#000000]<[/color]N;[color=#000000]j[/color][color=#000000]++[/color])
[color=#000000]printf[/color]([color=#0000ff]"%d[/color][color=#0000ff]\t[/color][color=#0000ff]"[/color][color=#000000],[/color]B[color=#000000][[/color][color=#000000]i[/color][color=#000000]][[/color][color=#000000]j[/color][color=#000000]]);[/color]
[color=#000000]printf[/color]([color=#0000ff]"[/color][color=#0000ff]\n[/color][color=#0000ff]"[/color]);
[color=#000000]}[/color]
[color=#000000]}[/color]
[/font]



[B][COLOR="Red"]结果[/COLOR][/B]

[font=Consolas][u]C++语言[/u]:
[color=#000000]A[/color][color=#000000]=[/color]
[color=#0000ff]1[/color] [color=#0000ff]2[/color]
[color=#0000ff]3[/color] [color=#0000ff]4[/color]
[color=#0000ff]5[/color] [color=#0000ff]6[/color]
[color=#0000ff]7[/color] [color=#0000ff]8[/color]

[color=#000000]A[/color][color=#a61717]'[/color][color=#000000]=[/color]
[color=#0000ff]1[/color] [color=#0000ff]3[/color] [color=#0000ff]5[/color] [color=#0000ff]7[/color]
[color=#0000ff]2[/color] [color=#0000ff]4[/color] [color=#0000ff]6[/color] [color=#0000ff]8[/color]
[/font]


所有时间均为北京时间。现在的时间是 05:16

Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.