选择 c/c++ 编译器
动部署工具,新建<generic COM Component>项目
M文件源码
编译COM组件
完成编译
生成自解压安装包(本地使用的话,Matalb自动注册COM组件,无需发布; 但如果想要发布到没有安装Matlab的计算机上,则安装包中需添加Matab运行库 MCR,MCR安装一次即可,另外目标计算机上还需要有msjava.dll及VC运行库 msvcrt100.dll才能成功注册COM,系统环境缺失的常见dll文件可以用DirectX修复工具修复,或者在网上下载然后手动注册)
最终生成的自解压安装文件
部署到另一台没有Matlab的计算机上(例如Xp SP3,虚拟机也可)
利用VB6 引用COM组件进行实际开发(Delphi /VC / .Net 均可引用)
VB6 测试 Demo 及源码
Option Base 1
Private comObj As CMCom '库中定义的类
Dim outZ As Variant '注意 Variant 数据类型
Dim inX(5) As 薯搭档Double
Dim inY(5) As Double
Private Sub Command1_Click()
'生成样本: 三次多项式 + 小扰动
For i = 1 To 5
inX(i) = i
inY(i) = i + 2 * i ^ 2 + 3 * i ^ 3 + 0.001 * Rnd(Now)
Next i
'调用 COM 组件成员函数
Call comObj.matlabPolyfit(1, outZ, inX, inY, 3)
'输出赝本数据
txtMsg.Text = txtMsg.Text & vbCrLf & "> 样本如下:" & vbCrLf & vbCrLftxtMsg.Text = txtMsg.Text & " " & "x y" & vbCrLf
For i = 1 To 5
txtMsg.Text = txtMsg.Text & " " & inX(i) & ", " & inY(i) & vbCrLf
Next i
'输出拟合多项式
txtMsg.Text = txtMsg.Text & vbCrLf & "> 输出拟合系数:" & vbCrLf & vbCrLf & " Y = "
For i = 1 To 4
If i <> 4 Then
txtMsg.Text = txtMsg.Text & Format(outZ(1, i), "0.000") & " * X^" & (4 - i) & " + "
枝森 Else
txtMsg.Text = txtMsg.Text & Format(outZ(1, i), "0.000") & " * X^" & (4 - i)
End If
Next i
End Sub
Private Sub Form_Load()
Set comObj = New CMCom
End Sub
Private Sub Form_Unload(Cancel As Integer)
Set comObj = Nothing
End Sub
注意事项
发布COM组件到其他计算机上时,目标计算机的环境需要有VC运行库msvcrt100.dll
如果目标计算机上装有MCR, 那打包COM组件时就不用添加MCR了
我去年下半年一直在做matlab与C++的混编。实用的就是COM组件。因为我也用到了神经网络工具箱,但是在编译过后,根本就连结不上。滚汪悉最后从网上找了很多的方法,都没大乎有得以完满地解决。最后只得放弃使用工具箱函数,才能连接成功。建议你放弃使用工具箱函数用matlab一步一步的编写算法吧。这方面的现成程序网上有很多,你可以参考一下陵姿。这宽吵个是神经网络的代码函数newff建立一个可训练的前馈网络。这需要4个输入参数。
第一个参数是一个Rx2的矩阵以定义R个输入向量的最察慧小值和最大值。
第二个参数是一个设定每层神经元个数的数组。
第三个参数是包含每层用败巧答到的传递函数名称的细胞数组。
最后一个参数是用到的训练函数的名称。
后面是一些训练的目标设置 如误差等
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)