通信工程原理之基于COM的MatIab的参数处理[2]

互联网技术 责任编辑:zap688 2012-03-20

摘要:(2)在VC平台下创建名为PCA的基于对话框的MFC工程,添加一打开文件的按钮控件,ID为ID_FILE_OPEN.篇幅所限只给出部分核心代码,首先在Dlg类中添加3个私有成员变量用以保存Matlab读取的数据及行列值,即:double*m_originData;longm_row,m_col;在响应函数中添加如下代码CFileDialogfileDlg(TRUE);fileDlg.m_ofn.lpstrTitle=“

 

(2)在VC平台下创建名为PCA的基于对话框的MFC工程,添加一打开文件的按钮控件,ID为ID_FILE_OPEN.篇幅所限只给出部分核心代码,首先在Dlg类中添加3个私有成员变量用以保存Matlab读取的数据及行列值,即:

double *m_originData; long   m_row, m_col;

在响应函数中添加如下代码

CFileDialog fileDlg(TRUE);

fileDlg.m_ofn.lpstrTitle=“请选择你的excel数据”;

fileDlg.m_ofn.lpstrFilter=“Text Files(*.xls)*.xlsAll Files(*.*)*.*”;

if(IDOK==fileDlg.DoModal() {

CString fileName; IFileOpenclass *pfile;

VARIANT filePath,output,rowOutput,colOutput;

//m文件的输入参数

fileName = fileDlg.GetPathName();

//获取文件路径并存于fileName中

CoInitialize(NULL);                                //COM初始化

HRESULT hr = CoCreateInstance(CLSID_FileOpenclass,NULL,CLSCTX_ALL,IID_IFileOpenclass,(void**)&pfile);

//新建COM实例

VariantInit(&filePath);              //VARIANT数据初始化

filePath.vt = VT_BSTR;           //指定filePath变量类型

//将fileName中保存的指定文件路径名保存至filePath参数中

filePath.bstrVal = fileName.AllocSysString();

pfile->CExcelRead(3,&output,&rowOutput, &colOutput,filePath);

m_row=(long) rowOutput.dblVal;

//取出行列值及录入数据

m_col = (long) colOutput.dblVal;

m_originData = (double *)malloc(sizeof(double)*m_row*m_

col); memcpy(m_originData,output.parray->pvData,m_row*m_

col*sizeof(double));

//将matlab读入数据保存到m_originData供后面程序使用

} 上述C++代码中省略了异常处理和相关的内存、COM释放代码,由于代码比较简单所以不做进一步解析。请注意,下面将省略COM初始化及实例化等相同代码。

[1]  [2]  [3]  [4]  [5]  

更多资料
更多课程
更多真题
温馨提示:因考试政策、内容不断变化与调整,本网站提供的以上信息仅供参考,如有异议,请考生以权威部门公布的内容为准!

通信工程师备考资料免费领取

去领取

距离2025 通信工程师考试

还有
  • 0
  • 3
  • 7
专注在线职业教育24年

信息系统项目管理师

信息系统项目管理师

!
咨询在线老师!