当前位置:编程学习 > VB >>

求助!vb6.0的代码中调用matlab时出错,求高人指教!

vb代码如下:

Sub NNStaticCal()
  '调用 Matlab 进行神经网络静态计算
    Dim MatLab As Object
    Dim Result As String
    Dim ArrayReal() As Double, ArrayImag() As Double
    Dim RS_SubMat As Single
   ' Load rbf_weight
    Set MatLab = CreateObject("Matlab.Application")
    Call MatLab.MinimizeCommandWindow
    Result = MatLab.Execute("cd " & App.Path)
    Result = MatLab.Execute("load " & RBFNNFile)
    
    RS_SubMat = (RsCoff_Lime * StaticLimeSet + RsCoff_Dolo * StaticDoloSet _
        + RsCoff_Dolo * StaticR_DoloSet + RsCoff_Flsp * StaticFlspSet + RsCoff_Fesi * StaticFeSiSet _
        + RsCoff_Coke * StaticCokeSet) / MainMaterialWeight
    ReDim ArrayReal(1, 6)
    ArrayReal(1, 1) = HMRatio:  ArrayReal(1, 2) = ScrapRatio:   ArrayReal(1, 3) = HMSi
    ArrayReal(1, 4) = HMT:      ArrayReal(1, 5) = AimT:         ArrayReal(1, 6) = RS_SubMat
    Call MatLab.putfullmatrix("in_iron", "base", ArrayReal, ArrayImag)    '仿真用数据
    ReDim ArrayReal(1, 5)
    ArrayReal(1, 1) = HMT:        ArrayReal(1, 2) = HMC:          ArrayReal(1, 3) = RS_SubMat
    ArrayReal(1, 4) = HMRatio:    ArrayReal(1, 5) = AimT
    Call MatLab.putfullmatrix("in_vo", "base", ArrayReal, ArrayImag)    '仿真用数据
    Result = MatLab.Execute("RBFStaticCal")
    Dim TempIron() As Double, TempVO() As Double
    Call MatLab.getfullmatrix("nnout_iron", "base", TempIron, ArrayImag)
    Call MatLab.getfullmatrix("nnout_vo", "base", TempVO, ArrayImag)
          TempVO(0, 0) = TempVO(0, 0) * IronTotal - OsCoff_Iron * TempIron(0, 0)
        NNVO = TempVO(0, 0):
        NNClant = TempIron(0, 0):

    '显示 神经网络静态计算 结果
        txtNNVO = CInt(NNVO)
        txtNNClant = CInt(100 * NNClant) / 100
End Sub


matlab代码如下:

%  iron_b1             8x1             64  double array    冷却剂训练结果
%  iron_b2             1x1              8  double array 冷却剂训练结果
%  iron_w1             8x6            384  double array 冷却剂训练结果
%  iron_w2             1x8             64  double array 冷却剂训练结果
%  mean_in_iron        1x6             48  double array 冷却剂网络训练集 输入段 的平均值
%  mean_in_vo          1x5             40  double array 吹氧量网络训练集 输入段 的平均值
%  mean_out_iron       1x1              8  double array 冷却剂网络训练集 输出段 的平均值
%  mean_out_vo         1x1              8  double array 吹氧量网络训练集 输出段 的平均值
%  std_in_iron         1x6             48  double array 冷却剂网络训练集 输入段 的平均值
%  std_in_vo           1x5             40  double array 吹氧量网络训练集 输入段 的平均值
%  std_out_iron        1x1              8  double array 冷却剂网络训练集 输出段 的平均值
%  std_out_vo          1x1              8  double array 吹氧量网络训练集 输出段 的平均值
%  vo_b1               4x1             32  double array 吹氧量网络训练结果
%  vo_b2               1x1              8  double array 吹氧量网络训练结果
%  vo_w1               4x5            160  double array 吹氧量网络训练结果
%  vo_w2               1x4             32  double array 吹氧量网络训练结果
% in_iron     为6x6
% 输入变量标准化工作
in_iron=(in_iron-ones(size(in_iron,1),1)*mean_in_iron)./(ones(size(in_iron,1),1)*std_in_iron);
in_vo=(in_vo-ones(size(in_vo,1),1)*mean_in_vo)./(ones(size(in_vo,1),1)*std_in_vo);
   
   NNTWARN OFF %有关信息显示的关闭
   
   %神经网络输出计算
nnout_iron=simurb(in_iron',iron_w1,iron_b1,iron_w2,iron_b2); % simulate
nnout_vo=simurb(in_vo',vo_w1,vo_b1,vo_w2,vo_b2);
   %  将神经网络输出的解标准化
   nnout_iron=nnout_iron.*(ones(size(nnout_iron,1),1)*std_out_iron)+mean_out_iron;%std
nnout_vo=nnout_vo.*(ones(size(nnout_vo,1),1)*std_out_vo)+mean_out_vo;
nnout_vo=nnout_vo.*total_iron'-biron.*nnout_iron;


但是每次运行都出错,提示说 inappropriate input array size
请问各位大侠,这是怎么回事,帮我看看呗,我是初学者,都不是很懂,是不是matlab中的数组的维数有问题啊。不胜感激。 没用过matlab的,今天刚从百度启蒙的,不懂装顶的,本楼免分的……



路过帮顶……
补充:VB ,  网络编程
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,