⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 vcmat1doc.cpp

📁 MATLAB高级编程,MATLAB工程数学,MATLAB实用教程,MATLAB图形图像等源码集锦
💻 CPP
字号:
// VCmat1Doc.cpp : implementation of the CVCmat1Doc class
//

#include "stdafx.h"
#include "VCmat1.h"

#include "VCmat1Doc.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CVCmat1Doc

IMPLEMENT_DYNCREATE(CVCmat1Doc, CDocument)

BEGIN_MESSAGE_MAP(CVCmat1Doc, CDocument)
	//{{AFX_MSG_MAP(CVCmat1Doc)
	ON_COMMAND(ID_Menu_SaveAsMatFile, OnMenuSaveAsMatFile)
	ON_COMMAND(ID_Menu_InPutFromMat, OnMenuInPutFromMat)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CVCmat1Doc construction/destruction

CVCmat1Doc::CVCmat1Doc()
{int i,j;
 m=5; n=10;
 c_x=10.0;//////////变量
 c_A=new double[n]; //////////一维数组
 for(i=0;i<n;i++)c_A[i]=(double)i;
 c_AB=new double*[m];for(i=0;i<m;i++)c_AB[i]=new double[n];//二维数组
 for(i=0;i<m;i++)for(j=0;j<n;j++)c_AB[i][j]=(double)(i*j+1);
 
 m_x=mxCreateDoubleMatrix(1,1,mxREAL);
 *mxGetPr(m_x)=c_x;
 m_A=mxCreateDoubleMatrix(1,n,mxREAL);
 for(i=0;i<n;i++)*(mxGetPr(m_A)+i)=c_A[i];
 m_AB=mxCreateDoubleMatrix(m,n,mxREAL);
 for(i=0;i<m;i++)for(j=0;j<n;j++){*(mxGetPr(m_AB)+j*m+i)=c_AB[i][j];}
}

CVCmat1Doc::~CVCmat1Doc()
{
delete c_A; ////////内存释放
for(int i=0;i<m;i++)delete c_AB[i];delete c_AB;
}

BOOL CVCmat1Doc::OnNewDocument()
{
	if (!CDocument::OnNewDocument())
		return FALSE;

	// TODO: add reinitialization code here
	// (SDI documents will reuse this document)

	return TRUE;
}



/////////////////////////////////////////////////////////////////////////////
// CVCmat1Doc serialization

void CVCmat1Doc::Serialize(CArchive& ar)
{int i,j;
	if (ar.IsStoring())
	{
	ar>>c_x;
	for(i=0;i<n;i++)ar>>c_A[i];
	for(i=0;i<m;i++)for(j=0;j<n;j++)ar>>c_AB[i][j];
	}
	else
	{
	ar<<c_x;
	for(i=0;i<n;i++)ar<<c_A[i];
	for(i=0;i<m;i++)for(j=0;j<n;j++)ar<<c_AB[i][j];
	}
}

/////////////////////////////////////////////////////////////////////////////
// CVCmat1Doc diagnostics

#ifdef _DEBUG
void CVCmat1Doc::AssertValid() const
{
	CDocument::AssertValid();
}

void CVCmat1Doc::Dump(CDumpContext& dc) const
{
	CDocument::Dump(dc);
}
#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CVCmat1Doc commands


void CVCmat1Doc::OnMenuSaveAsMatFile() 
{
MATFile *pmat; CString str;	
CFileDialog in(FALSE,NULL,NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,
			   "Matlab Data File(*.mat)|*.mat",NULL);
if(in.DoModal()==IDOK){str=in.GetPathName();
if((pmat=matOpen(str,"w"))==(MATFile *)NULL)
{AfxMessageBox("Can't open Out MatFile");exit(0);}
Write_mxArray(pmat,"m_x",m_x);
Write_mxArray(pmat,"m_A",m_A);
Write_mxArray(pmat,"m_AB",m_AB);
matClose(pmat);
}
}

void CVCmat1Doc::OnMenuInPutFromMat() 
{ 
MATFile *pmat; CString str;	
CFileDialog in(TRUE,NULL,NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT
			   ," Matlab Data File(*.mat)|*.mat",NULL);
if(in.DoModal()==IDOK){str=in.GetPathName();
if((pmat=matOpen(str,"r"))==(MATFile *)NULL)
{AfxMessageBox("Can't open Out MatFile");exit(-1);}
Read_mxArray(pmat,"m_x");
Read_mxArray(pmat,"m_A");
Read_mxArray(pmat,"m_AB");
matClose(pmat);
}
}

mxArray *CVCmat1Doc::Read_mxArray(MATFile *pmat,const char *VariableName)
{ mxArray *out; CString str;
out=matGetVariable(pmat, VariableName);
str.Format("读取变量:%s错误,返回", VariableName); ////定义提示信息
if(out==(mxArray *)NULL){ AfxMessageBox(str); return 0; }
return(out);////////////////////////////返回所读取的变量
}

void CVCmat1Doc::Write_mxArray(MATFile *pmat, char *VariableName,mxArray *Variable)
{ CString str; 
str.Format("写入变量:%s错误,返回", VariableName); ////定义提示信息
if((matPutVariable(pmat,VariableName,Variable))!=0){AfxMessageBox(str);}
}

⌨️ 快捷键说明

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