问题描述
用deploytool将M文件做成.dll文件,后用C#调用提示错误...MWMCR::EvaluateFunctionerror...Thelefthandsideisinitializedandhasanemptyrangeofindices.However,therighthandsidereturnedoneormoreresults.Errorin=>BP_ANN_1.matline4.其中M函数为functiony=BP_ANN_1(input,output,testIn,testOut)input=input';output=output';inputNorm=premnmx(input);net=newff(minmax(input),[61],{'logsig''purelin'},'traingdx');net.trainparam.epochs=10000;net.trainparam.goal=0.001;net.divideFcn='';net=train(net,inputNorm,output);testIn=testIn';testOut=testOut';testInNorm=premnmx(testIn);y=sim(net,testInNorm);C#程序为MWNumericArrayb=newMWNumericArray(MWArrayComplexity.Real,4,1);MWNumericArrayc=newMWNumericArray(MWArrayComplexity.Real,2,2);MWNumericArrayd=newMWNumericArray(MWArrayComplexity.Real,2,1);a[1,1]=1;a[1,2]=1;a[2,1]=0;a[2,2]=1;a[3,1]=1;a[3,2]=0;a[4,1]=0;a[4,2]=0;b[1,1]=1;b[2,1]=0;b[3,1]=0;b[4,1]=0;c[1,1]=1;c[2,1]=0;c[2,1]=1;c[2,2]=1;d[1,1]=0;d[2,1]=1;bp.BP_ANN_1(a,b,c,d);有没有做过这方面的大神给指条路啊!!!!!!!
解决方案
解决方案二:
楼主你好,请问你这个问题解决了么,我在做神经网络的时候,用c#调用也出现了这个问题,求指教。。。
解决方案三:
利用dll的形式不太可取,因为里面有太多的未知函数,建议楼主使用COM方式来调用matlab。
解决方案四:
楼主问题解决了么,也遇到一样的问题,同样是newff
解决方案五:
看看这个帖子对LZ有无帮助引用
嗯嗯。。现在问题已经解决了~!遇到问题:1.在C#引用的时候生成的.dll文件会遇到版本的问题。这时候我们要看自己用的VS版本和生成的是否一致。2.C#代码里面引用传值的时候要进行数据的转换。将c#的参数输入到matlab函数时,要将参数转化为matlab的参数形式,通常是MWArray类型.matlab返回的参数,也要转化为c#用的类型,比如数组或者数值类型。
http://bbs.csdn.net/topics/390340895
解决方案六:
我也遇到了同样的问题,请问大家是怎么解决的呢,期待高手指导,感激不尽!email:wwwbudaoweng@qq.com
解决方案七:
通过COM或者.NET组件是搞不定神经网络的,需要借助MATLAB引擎技术,具体参考http://blog.sina.com.cn/u/3603695961