我在matlab中建立了一个函数
function dblRho=FunSatuVaporRho(dblt,dblp)
dblt0=[0,0,0,0,0,0,0,0,0,0,...
10,10,10,10,10,10,10,10,10,10];
dblp0=[610.758,656.653,705.49,757.466,812.873,871.811,934.574,1001.16,1071.96,1147.18,...
1227.01,1311.64,1401.37,1496.49,1597.31,1703.91,1816.78,1936.127,2062.34,2195.71];
dblRho0=[0.004847,0.005192,0.005558,0.005946,0.006358,0.006795,0.007258,0.007748,0.008267,0.008816,...
0.009396,0.01001,0.01066,0.01134,0.01206,0.01282,0.01363,0.01447,0.01536,0.01630];
dblRho=griddata(dblt0,dblp0,dblRho0,dblt,dblp, 'v4 ');
目的是实现插值计算,然后用MATCOM生成DLL文件。看MATCOM帮助说要在VB中调用这个函数必须用到生成的DLL文件,BAS文件和cls文件,bas文件是用来声明DLL,cls是个函数,如下:
Public Function FunSatuVaporRho(ParamArray v())
' var input 1 out
Dim l As Long, u As Long, s As Long, i As Long
l = LBound(v)
u = UBound(v)
s = u - l + 1
Dim prhs_mat(1 To 64)
Dim prhs(1 To 64) As Long
For i = 1 To s
prhs_mat(i) = ToMatrix(v(i - 1 + l))
prhs(i) = prhs_mat(i).Handle
Next
Dim plhs(1 To 1) As Long
Dim e As Long, emsg As String * 1024
e = FunSatuVaporRho_v(emsg, 1, plhs(1), u - l + 1, prhs(1))
Set FunSatuVaporRho = New Matrix
FunSatuVaporRho.Handle = plhs(1)
If e > 0 Then
emsg = Left$(emsg, e)
Err.Raise 999, , emsg
End If
End Function
估计就是在VB中调用这个函数,现在问题是,在MATLab中编的函数是通过输入两个值来实现二维的插值计算,而现在这个函数的参数是(ParamArray v()),我在VB中调用:
dim b as double
b=FunSatuVaporRho(12,1233)
vb提示类型不匹配,,请大侠告知这个函数的输入参数得怎么输呀?要用到数组吗?
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ji-chu/109075.html