📄 lmsimu.c
字号:
*
* % 输入层到中间层的传递函数
* if (length(InputFun)==0)
*/
if (mclLengthInt(mclVa(InputFun, "InputFun")) == 0) {
/*
* InputFun = 'tansig';
*/
mlfAssign(&InputFun, _mxarray3_);
/*
* end
*/
}
/*
* % 中间层到输出层的传递函数
* if (length(OutputFun)==0)
*/
if (mclLengthInt(mclVa(OutputFun, "OutputFun")) == 0) {
/*
* OutputFun = 'purelin'
*/
mlfAssign(&OutputFun, _mxarray5_);
mclPrintArray(mclVa(OutputFun, "OutputFun"), "OutputFun");
/*
* end
*/
}
/*
*
* frw1=fopen(sprintf('w%s%s',ModelNo,'1.dat'),'r');
*/
mlfAssign(
&frw1,
mlfFopen(
NULL,
NULL,
mlfSprintf(
NULL, _mxarray7_, mclVa(ModelNo, "ModelNo"), _mxarray9_, NULL),
_mxarray11_,
NULL));
/*
* frb1=fopen(sprintf('b%s%s',ModelNo,'1.dat'),'r');
*/
mlfAssign(
&frb1,
mlfFopen(
NULL,
NULL,
mlfSprintf(
NULL, _mxarray13_, mclVa(ModelNo, "ModelNo"), _mxarray9_, NULL),
_mxarray11_,
NULL));
/*
* frw2=fopen(sprintf('w%s%s',ModelNo,'2.dat'),'r');
*/
mlfAssign(
&frw2,
mlfFopen(
NULL,
NULL,
mlfSprintf(
NULL, _mxarray7_, mclVa(ModelNo, "ModelNo"), _mxarray15_, NULL),
_mxarray11_,
NULL));
/*
* frb2=fopen(sprintf('b%s%s',ModelNo,'2.dat'),'r');
*/
mlfAssign(
&frb2,
mlfFopen(
NULL,
NULL,
mlfSprintf(
NULL, _mxarray13_, mclVa(ModelNo, "ModelNo"), _mxarray15_, NULL),
_mxarray11_,
NULL));
/*
*
* InputDim=NetPara(1); %输入层节点数
*/
mlfAssign(&InputDim, mclIntArrayRef1(mclVa(NetPara, "NetPara"), 1));
/*
* OutputDim=NetPara(2); %输出层节点数
*/
mlfAssign(&OutputDim, mclIntArrayRef1(mclVa(NetPara, "NetPara"), 2));
/*
* MidDim=NetPara(3); %中间层节点数
*/
mlfAssign(&MidDim, mclIntArrayRef1(mclVa(NetPara, "NetPara"), 3));
/*
*
* [w1,count]=fscanf(frw1,'%f',[MidDim,InputDim]);
*/
mlfAssign(
&w1,
mlfFscanf(
&count,
mclVv(frw1, "frw1"),
_mxarray17_,
mlfHorzcat(
mclVv(MidDim, "MidDim"), mclVv(InputDim, "InputDim"), NULL)));
/*
* [b1,count]=fscanf(frb1,'%f',[MidDim,1]);
*/
mlfAssign(
&b1,
mlfFscanf(
&count,
mclVv(frb1, "frb1"),
_mxarray17_,
mlfHorzcat(mclVv(MidDim, "MidDim"), _mxarray19_, NULL)));
/*
* [w2,count]=fscanf(frw2,'%f',[OutputDim,MidDim]);
*/
mlfAssign(
&w2,
mlfFscanf(
&count,
mclVv(frw2, "frw2"),
_mxarray17_,
mlfHorzcat(
mclVv(OutputDim, "OutputDim"), mclVv(MidDim, "MidDim"), NULL)));
/*
* [b2,count]=fscanf(frb2,'%f',[OutputDim,1]);
*/
mlfAssign(
&b2,
mlfFscanf(
&count,
mclVv(frb2, "frb2"),
_mxarray17_,
mlfHorzcat(mclVv(OutputDim, "OutputDim"), _mxarray19_, NULL)));
/*
*
* fclose(frw1);
*/
mclAssignAns(&ans, mlfFclose(mclVv(frw1, "frw1")));
/*
* fclose(frb1);
*/
mclAssignAns(&ans, mlfFclose(mclVv(frb1, "frb1")));
/*
* fclose(frw2);
*/
mclAssignAns(&ans, mlfFclose(mclVv(frw2, "frw2")));
/*
* fclose(frb2);
*/
mclAssignAns(&ans, mlfFclose(mclVv(frb2, "frb2")));
/*
*
* for i=1:InputDim
*/
{
int v_ = mclForIntStart(1);
int e_ = mclForIntEnd(mclVv(InputDim, "InputDim"));
if (v_ > e_) {
mlfAssign(&i, _mxarray20_);
} else {
/*
* p1(i)=SimulatePara(i);
* end
*/
for (; ; ) {
mclIntArrayAssign1(
&p1,
mclIntArrayRef1(mclVa(SimulatePara, "SimulatePara"), v_),
v_);
if (v_ == e_) {
break;
}
++v_;
}
mlfAssign(&i, mlfScalar(v_));
}
}
/*
*
* a=simuff(p1',w1,b1,InputFun,w2,b2,OutputFun);
*/
mlfAssign(
&a,
mlfNSimuff(
1,
NULL,
NULL,
mlfCtranspose(mclVv(p1, "p1")),
mclVv(w1, "w1"),
mclVv(b1, "b1"),
mclVa(InputFun, "InputFun"),
mclVv(w2, "w2"),
mclVv(b2, "b2"),
mclVa(OutputFun, "OutputFun"),
NULL,
NULL,
NULL));
/*
*
*
* %将仿真结果写入文件
* fwresult=fopen(sprintf('result%s%s',ModelNo,'.dat'),'w');
*/
mlfAssign(
&fwresult,
mlfFopen(
NULL,
NULL,
mlfSprintf(
NULL, _mxarray21_, mclVa(ModelNo, "ModelNo"), _mxarray23_, NULL),
_mxarray25_,
NULL));
/*
* fprintf(fwresult,'%-15.6f\n',a);
*/
mclAssignAns(
&ans,
mlfNFprintf(
0, mclVv(fwresult, "fwresult"), _mxarray27_, mclVv(a, "a"), NULL));
/*
* fclose(fwresult);
*/
mclAssignAns(&ans, mlfFclose(mclVv(fwresult, "fwresult")));
/*
* retdouble = a;
*/
mlfAssign(&retdouble, mclVv(a, "a"));
/*
* logsig(1);
*/
mclAssignAns(&ans, mlfLogsig(_mxarray19_, NULL));
/*
* purelin(1);
*/
mclAssignAns(&ans, mlfPurelin(_mxarray19_, NULL));
/*
* tansig(1);
*/
mclAssignAns(&ans, mlfTansig(_mxarray19_, NULL));
/*
* cd(olddir);
*/
mclAssignAns(&ans, mlfNCd(0, mclVv(olddir, "olddir")));
mclValidateOutput(retdouble, 1, nargout_, "retdouble", "lmsimu");
mxDestroyArray(ans);
mxDestroyArray(olddir);
mxDestroyArray(frw1);
mxDestroyArray(frb1);
mxDestroyArray(frw2);
mxDestroyArray(frb2);
mxDestroyArray(InputDim);
mxDestroyArray(OutputDim);
mxDestroyArray(MidDim);
mxDestroyArray(w1);
mxDestroyArray(count);
mxDestroyArray(b1);
mxDestroyArray(w2);
mxDestroyArray(b2);
mxDestroyArray(i);
mxDestroyArray(p1);
mxDestroyArray(a);
mxDestroyArray(fwresult);
mxDestroyArray(DataDir);
mxDestroyArray(OutputFun);
mxDestroyArray(InputFun);
mxDestroyArray(SimulatePara);
mxDestroyArray(NetPara);
mxDestroyArray(ModelNo);
mclSetCurrentLocalFunctionTable(save_local_function_table_);
return retdouble;
/*
*
*
*/
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -