📄 main.cpp
字号:
#include <stdlib.h>
#include <stdio.h>
#include "bp.h"
#include "bp_learnfunction.h"
#include "system.h"
#include "matplot.h"
static double ridArray[IDEN + 2];//辨识序列
static double rteArray[IDEN + 2];//测试序列
static double idReferArray[RANK][MAXDIMREFER][MAXDIMREFER];//BP网络系数矩阵
void main()
{
double xLArray[IDEN + 2][DIMX];//BP网络输入
double yLArray[IDEN + 2][DIMY];//BP网络输出
double yidArray[IDEN];//系统辨识网络输出采样序列
double yteArray[IDEN];//系统测试网络输出出采样序列
double ydiArray[IDEN+2];//系统辨识期望输出采样序列
double ydtArray[IDEN+2];//系统测试期望输出采样序列
double test;
test= 0;
ydiArray[0] = 0;
//采样系统期望输出,训练输入为y = 0.1*t - 0.5, 采样周期为1s
for( int k = 0; k < IDEN + 2; k++ )
ridArray[k] = uid( LEN*k );
ExpOutputid( ydiArray, IDEN + 2, 0 );
//构造bp网络训练数据样本,数据长度为20
for( int idB = 2; idB < IDEN + 2 ; idB++ )
{
xLArray[idB-2][0] = ridArray[idB - 2];
xLArray[idB-2][1] = ydiArray[idB - 2];
xLArray[idB-2][2] = ydiArray[idB-1];
yLArray[idB-2][0] = ydiArray[idB];
}
//训练BP网络
BPLearnProc( xLArray, yLArray, IDEN, idReferArray );
//学习后辨识样本网络输出
for( int idC = 2; idC < IDEN + 2; idC++ )
{
xLArray[idC-2][0] = ridArray[idC- 2];
xLArray[idC-2][1] = ydiArray[idC- 2];
xLArray[idC-2][2] = ydiArray[idC- 1];
yidArray[idC-2] = BPOutputk(xLArray, idReferArray, idC-2 );
}
//采样测试输出样本,采样周期为1s
for( int k1 = 0; k1 < IDEN + 2; k1++ )
rteArray[k1] = ute( k1 );
ExpOutputid( ydtArray, IDEN + 2, 1 );
//获取测试输入得到得数据样本
for( int teB = 2; teB < IDEN + 2 ;teB++ )
{
xLArray[teB-2][0] = rteArray[teB - 2];
xLArray[teB-2][1] = ydtArray[teB - 2];
xLArray[teB-2][2] = ydtArray[teB - 1];
yteArray[teB-2] = BPOutputk(xLArray, idReferArray, teB-2 ) ;
}
matDraw( ridArray, rteArray, yidArray, yteArray, ydiArray, ydtArray ); //由matlab画出各信号序列
exit(1);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -