mwdatachange.cpp

来自「精通Matlab与C_C++混合程序设计.rar 是精通Matlab与C_C+」· C++ 代码 · 共 78 行

CPP
78
字号
// mwDataChange.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"

#include "matlab.hpp"
#include "mex.h"
#include "matrix.h"


int main(int argc, char* argv[])
{
	/*数组构建*/
	static double data[]={1,3,5,7,9,11};
	double * pdata=NULL;
	mwArray A,B,C,D,E,F;	
	mxArray * mxD=NULL;
	A = 5;
	B = "Hello World!";
	C = mwArray(2,3,data);
	mxD = mxCreateDoubleMatrix(2,3,mxREAL);
	pdata = mxGetPr(mxD);
	for(int i=0;i<6;i++)
	{
		pdata[i]=i;
	}
	D = mxD;

	E = ramp(1,10);	
	F = E(8);

	/*数组的大小获取*/
	mwArray m,n;
	int m1,n1;
	size(mwVarargout(m,n),C);/*方式1*/
	m1=size(&n1,C);/*方式2,只适用于二维的情况*/
	
	int dims;
	int ndims[2];
	dims=C.Size();
	C.Size(ndims);/*方式3*/

	/*mwArray 布尔型变量转换为 c/c++布尔型变量*/
	mwArray isCReal= isreal(C);

	/*C变量数据指针的获取*/
	mxArray * pCMxData = C.GetData();
	double * pCData = mxGetPr(pCMxData);
	

	cout <<"构造1x1的数值阵列:\n" <<A <<endl;
	cout <<"构造字符阵列:\n" <<B <<endl;
	cout <<"构造2x3的数值阵列:\n" <<C <<endl;
	cout <<"通过mxArray构造2x3的数值阵列:\n" <<D <<endl;
	cout <<"通过mwSubArray构造数值阵列:\n" <<F <<endl;
	cout <<"数组C的维数为:"<<dims<<endl;
	cout <<"方法1:\n" <<"行:"<<m<<"\n"<<"列:"<<n<<"\n"<<endl;		
	cout <<"方法2:\n" <<"行:"<<m1<<"\n"<<"列:"<<n1<<"\n"<<endl;	
	cout <<"方法3:\n" <<"行:"<<ndims[0]<<"\n"<<"列:"<<ndims[1]<<"\n"<<endl;
	cout <<"C数组的元素个数为:"<<C.EltCount()<<"\n"<<endl;
	if(tobool(isCReal))
	{
		cout << "C数组的数组类型为实数!" <<endl;
	}
	else
	{
		cout << "C数组的数组类型为复数!" <<endl;
	}

	cout <<"阵列C的内容如下:\n"<<endl;
	for(i=0;i<C.EltCount();i++)
	{
		cout <<pCData[i]<<"   ";
	}
	cout<<endl;
	return 0;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?