《量化投资:以MATLAB为工具》

MATLAB技术论坛

 找回密码
 注册账号
查看: 1965|回复: 2
收起左侧

[提问] 基于COM的VC与matlab混合编程调用神经网络工具箱函数

[复制链接]
发表于 2011-5-17 08:43:36 | 显示全部楼层 |阅读模式
COM组件也没有什么大的问题,运行也没有错误,可是点了VC界面的按钮响应函数,就是不出运行结果。网上说是VC不能调用MATLAB中的神经网络工具箱函数,我看邓科 的12怎么就可以做呀,为什么呀?那位高手解决一下。我的程序如下:

  UpdateData(TRUE);
::CoInitialize(NULL);
double data1[8],data2[4];


  data1[0]=m_n1;
data1[1]=m_n2;
data1[2]=m_n3;
data1[3]=m_n4;
  data1[4]=m_n5;
data1[5]=m_n6;
data1[6]=m_n7;
data1[7]=m_n8;


data2[0]=m_n9;
data2[1]=m_n10;
data2[2]=m_n11;
data2[3]=m_n12;
   


VARIANT PP,TT;

VariantInit(&PP);
VariantInit(&TT);


TT.vt=VT_R8 | VT_ARRAY;


SAFEARRAYBOUND rgsabound[2];

rgsabound[0].cElements=2;
rgsabound[0].lLbound=0;
rgsabound[1].cElements=4;
rgsabound[1].lLbound=0;
   
  PP.vt=VT_R8 | VT_ARRAY;
PP.parray=SafeArrayCreate(VT_R8,2,rgsabound);
  PP.parray->pvData=data1;

   

if(PP.parray==NULL)
{
AfxMessageBox("fail");
return;
}


TT.parray=SafeArrayCreateVector(VT_R8,0,4);
TT.parray->pvData=data2;


  

if(FAILED(::CoInitialize(NULL)))
{
AfxMessageBox("ERROR");
return;
}
   
   
Imysimclass *scom=NULL;

HRESULT hr=::CoCreateInstance(CLSID_mysimclass,NULL,CLSCTX_ALL,IID_Imysimclass,(void**)&scom);

if(SUCCEEDED(hr))
{   
  
HRESULT hr1=scom->bp3(PP,TT);//在matlab中自己定义的函数
}
  if(!SUCCEEDED(hr))
{
MessageBox("error");
return;
}


m_n13=data1[0]+data2[0];
   
  
UpdateData(FALSE);
scom->Release();
::CoUninitialize();
   

  matlab中编写的BP3函数:
  function SHE(P,T)

net=newff(minmax(P),[3,1],{'tansig','purelin'},'traingdm')
net.trainParam.show=50;
net.trainParam.lr=0.05;
net.trainParam.mc=0.9;
net.trainParam.epochs=1000;
net.trainParam.goal=1e-3;
[net,tr]=train(net,P,T);
A=sim(net,P)
E=T-A
MSE=mse(E)


求求各位给个解释!谢谢了呀!
发表于 2013-3-13 16:03:24 | 显示全部楼层
请问你最后成功了吗?
发表于 2013-10-21 11:18:52 | 显示全部楼层
楼主你问题解决了么
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

QQ|网站地图|MATLAB技术论坛|Simulink仿真论坛 ( 蜀ICP备19014457号 

GMT+8, 2020-11-26 06:46 , Processed in 0.051641 second(s), 12 queries , Gzip On, MemCached On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表