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)
求求各位给个解释!!!!!!!谢谢了呀!
::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)
求求各位给个解释!!!!!!!谢谢了呀!
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货