如何用Matlab制作发布COM组件

如何用Matlab制作发布COM组件,第1张

选择 c/c++ 编译器

动部署工具,新建<generic COM Component>项目

为COM组件数乱添加新类及类的输出函数

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 & vbCrLf

    txtMsg.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个输入向量的最察慧小值和最大值。

第二个参数是一个设定每层神经元个数的数组。

第三个参数是包含每层用败巧答到的传递函数名称的细胞数组。

最后一个参数是用到的训练函数的名称。

后面是一些训练的目标设置 如误差等


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12224914.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-22
下一篇 2023-05-22

发表评论

登录后才能评论

评论列表(0条)

保存