A = mxCreateDoubleMatrix(M, N, mxREAL);mxDestroyArray(A);

原创 2012年03月21日 14:30:10
#include <string.h>
#include "mex.h"
void DisplayMatrix(char *Name, double *Data, int M, int N)
{ /* Display matrix data */
	int m, n;
	mexPrintf("%s = \n", Name);
	for(m = 0; m < M; m++, mexPrintf("\n"))
		for(n = 0; n < N; n++)
			mexPrintf("%8.4f ", Data[m + M*n]);
}

void CallQR(double *Data, int M, int N)
{ /* Perform QR factorization by calling the MATLAB function */
	mxArray *Q, *R, *A;
	mxArray *ppLhs[2];
	DisplayMatrix("Input", Data, M, N);
	A = mxCreateDoubleMatrix(M, N, mxREAL); /* Put input in an mxArray */
	memcpy(mxGetPr(A), Data, sizeof(double)*M*N);
	mexCallMATLAB(2, ppLhs, 1, &A, "qr"); /* Call MATLAB's qr function */
	Q = ppLhs[0];
	R = ppLhs[1];
	DisplayMatrix("Q", mxGetPr(Q), M, N);
	DisplayMatrix("R", mxGetPr(R), M, N);
	mxDestroyArray(R); /* No longer need these */
	mxDestroyArray(Q);
	mxDestroyArray(A);
}

void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[])
{
#define M_IN prhs[0]
	if(nrhs != 1 || mxGetNumberOfDimensions(M_IN) != 2 || !mxIsDouble(M_IN))
		mexErrMsgTxt("Invalid input.");
	CallQR(mxGetPr(M_IN), mxGetM(M_IN), mxGetN(M_IN));
}

相关文章推荐

给定一个函数rand()能产生0到n-1之间的等概率随机数,问如何产生0到m-1之间等概率的随机数?

题目:给定一个函数rand()能产生1到n之间的等概率随机数,问如何产生1到m之间等概率的随机数?先把问题特殊化,例如原题变为给定一个函数rand5(),该函数可以随机生成1-5的整数,且生成概率一样...

m0n0wall双线教程上

  • 2012年12月29日 16:35
  • 1.39MB
  • 下载

【hdu 5894】【组合数学 lucas 费马小求逆元】 【m个人坐n个围成一周的位置每个人距离至少为k,求方法数】

传送门:HDU5894 hannnnah_j’s Biological Test 描述: hannnnah_j’s Biological Test Time Limit: 200...

1到n内的几个数和为m

  • 2012年05月17日 13:54
  • 1KB
  • 下载

M进制转换N进制c程序

  • 2010年04月22日 17:10
  • 2KB
  • 下载

m0n0wall详细安装及基本配置方法(图)

http://wenku.baidu.com/view/ec5790bef121dd36a32d8271.html m0n0wall详细安装及基本配置方法(图) 公司一直在用ISA2006作为防火...
  • yuhui2f
  • yuhui2f
  • 2012年02月22日 13:34
  • 1478

N个人中一次叫第M个人出队

  • 2011年10月23日 18:23
  • 2KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:A = mxCreateDoubleMatrix(M, N, mxREAL);mxDestroyArray(A);
举报原因:
原因补充:

(最多只允许输入30个字)