v01.19,No.7,2003
截型电脑应用
2003年第19卷第7期
MicrocomputerAppIjcatjons
学习园地
(续2003年第6期63页)
方法:Project一>settl“g
三、应用实例
Preprocessor中添加MsVc,
MSWIND,lBMPC;
基于上述分析,此节将讨论基于Matlab c++函数库模
式和基于DLL模式的Vc与Matlab混合编程的详 过程,并
3)设置运行时动态链接库:
细
方法:Project一>Se¨I”g一>c\c++一>cat。gory一>
同时应用两类模式。
1.拟 现目标
DI。I。;
(10de(kncrati(m中选择Multlthrcaded
实
4)加入L|b文件:
(1)在Mallab环境下编写从数据文件中获取数据并绘制
图形的通用幽数.并对数据进行统计分析;将所编m文件用
MatLab编译器编译成DLL文件。
方法:ProJect一>se”l“g一>Add T。Pr。Ject一>Fl【es中
加人;
%Matlab%\extern\lib\wln32\Microsoh\msvc60\*.
(2)在Vc环境下建立基于MFc的对话框程序界面,输
入矩阵行列控制参数.生成正态随机矩阵;并对此矩阵求逆;
(3)生成正态随机矩阵,保存为数据文件;滴用¨中所得
DI。I。,以可视化方式显示该矩阵指定行数据。
1Ib:
%Matlab%\extern\llb\wjn32\11bmatpm.11b。
需指出:上述配置过程在混合编程初始实施一次即可。
4.混台编程的实现
2.m函数和DLL文件
(1)基于MFc,新建名为Vc Matlab的工程.其主程序界
在MatIab编
其内容如r:
funcllon VlewTesl(N.f【lename)
译环境下编写函数名为VeiwTe时的函数,
面如图1;
(2)在对话框上添加控件,并在cvcMatlabDlg::OnInltDi
蛐=fopen(fllename);%打工指定数据文件
1]}%读取矩阵列数
ajog()成员函数中分别对四个组合框控件㈣omb01、m—
comb02、m comb03、m comb04韧始化如图l;
c。ls=fscanr(fld,“g,[1
Nc一(str2num(N)一1)*(coIs);%观察第N行时需要
跳过数据行数;
For I=1:NC
Tmp— fscan“fld.%g%g,[2 1]);
End
cols])}%正态随机矩阵的
RowN— fscan“fld,“u蹦g.[2
第N行数据
Fclose(fld);
RowN— rowN’;x— rowN(:,1)}y— rowN(:,2);
Plot(x,y,’b’);%图形可视化,并对数据简单统计分析
图1程序界面
Title([’第’N’点平均值:’num2str(mean(y),6)’方差:
’num2str(var(y),6)]);
c+一数学函数
(3)在vcMatlabDlg.cpp中引用MatIab
库,即添加如下语句:#include”ma Llab,hpp”;
在Matlab命令行状态下将ViewTeH.m文件编译为同名
(4)复制vtewTe吨h文件到当前工程目录下,井在Vc
MatlabDIg.cpp中引用该文件:#include”ViewTest.";
(5)将ⅥewTesI.1ib添加到工程;
的DI.IJ.方法为:
mcc
VjewTest
译命令⋯ 运动成功后生成若干文件名相同、扩展名
B
t
Ilnk:11b
891
libhg:V1ewTest000一T
(6)复制viewTest
编
d11到当前工程的Deb“g目录(或Re
lⅢc目录)下;
各异的文件,与Vc混合编程只需用到以下!个文件:
ViewTest.dll,V记wTest.h,ViewTest.1ib。
3.vc环境配置
(7)在cvcMatlabDlg::onOK()成员函数中舔加如下代
码:
mwArray A,invA;//定义矩阵娄对象A和invA
A=randn(m— comb01,GetCurSel()十l;//生成正态艏
1)设置1nclude搜索目录:
目的:加入Matlab c++数学函数库头文件
方法:在T001s一>se“og一>Directories一>Include
Flles中添加:
机方阵
InvA— inv(A);//方阵求逆,可见相当简
B— randn(m— comb02.GetCurSel()+1,(m—
MwArray
洁
aIlab%\exlern\in
%Matlab%kxtern\include\cpp;蹦
M
comb03.GetCurSel()+1*100);
clud8;%Matlab%\extern\llb;
Double‘pB=mxGelPr(B,GeIDala());//将矩阵
值赋给
(注:“%Matlab%”表示Matlab安装目录,如“D:\Mat—
lab6pl”,以不同)
pB数组,供VC进一步处理
cstrinz fllcname;”d:\\bb.txt”;
2)定义预处理宏:
· 63·
万方数据
全部评论(0)