关于VB和MatLAB混合编程的问题

来源:百度知道 编辑:UC知道 时间:2024/09/26 01:25:15
最近毕业设计到了收尾,但是我编的程序仍然有错误,
我新建了一个工程试验这么做:
先用MATLAB编写一个二次拟合的程序,返回值是拟合曲线方程的系数组成的数组,程序如下:
function f=ercinihe(x,y,n)
%x,y分别对应x轴和y轴坐标,产生n次拟合多项式
f=polyfit(x,y,n)
end
用comtool生成dll文件erchi_1_0.dll(已经在dos中注册了mwcomutil.dll),然后打开VB,在工程中引用刚才生成的dll文件
在VB中产生两个数组,分别存放x、y轴的坐标,然后调用上面的函数:
Private Sub Form_Click()
Dim i As Integer
Dim f(5) As Single
Dim Ercidll As Erci.Erciclass
Set Ercidll = New Erci.Erciclass
Dim x(15) As Single
Dim y(15) As Single
For i = 1 To 15
x(i) = i
y(i) = Rnd * 10
Next i
Call Ercidll.ercinihe(1, f, x, y, 5)
For i = 1 To 5
Print f(i);
Next i
End Sub
但是单机窗体之后,窗体上显示的是5个0,并没有显示正确的数字。。。请问这是怎么回事?谁能帮我解决一下。。
另外:我在MATLAB环境下试验ercinihe这个函数没有问题。
能不能详细说明一下?谢谢了
------------------------
Call Ercidll.ercinihe(1, f, x, y, 5)
这条语句里面,后面三个参数是ercinihe这个函数的输入,"f"是输出,至于那个“1”,我也不太清楚,好像是和输出有关的

你在matlab写的原函数ercinihe中有三个参数,可是在vb中调用时你却输入了5个参数,我有点不明白你的代码。请问:vb中编译是否成功?报错没?
====================
奇怪了~你把matlab输出的DLL发给我,在线等你!我就不相信matlab不能更改VB中调用的参数!我QQ:61191138

值传递和引用传递的关系吧