⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 system.cpp

📁 用神经网络对系统辨识(BP网络)。此程序为c语言和matlab混和编程
💻 CPP
字号:
#include <math.h>
#include "system.h"
#include "bp.h"
#include  "bp_learnfunction.h"

//训练输入y=t
double uid( int k )
{
	return  (double)k *STEPLEN* 0.1 - 0.5;

}

//测试输入为幅值为0.5的方波,周期为20s
double  ute(int k)
{
	if( k % IDEN <= 9 )
		return 1;
	else
	    return 0;
	;
}

//计算BP网络输出
double  BPOutputk( double uArray[][DIMX], double conReferArray[][MAXDIMREFER][MAXDIMREFER], int k )
{
    double out[RANK][MAXDIMREFER];

    out[0][0] = 1;
	for( int dimXA = 1; dimXA <= DIMX; dimXA++ )//输入数据
		out[0][dimXA] = uArray[k][dimXA -1];
	
	for( int rankA = 1; rankA < RANK; rankA++ )//计算输出
        GetTheOut( rankA, conReferArray, out );

	return out[2][0];
}


//利用迭代法求解系统的输出,步长为0.0001
void  ExpOutputid( double yArray[], int dimArray, int rid )//rid为输入的信号的选择,0为辨识信号, 1为测试信号
{
	double temp;
	double dy[ (int)(LEN) ];
	double y[ (int)(LEN) ];

	y[0]= 0;
	dy[0]= 0;
	yArray[0]= 0;
   
	for( int k0 = 0; k0 < dimArray-1; k0++ )
    {	
		for( int k1 = 0; k1 < LEN; k1++ )
		{
			temp = -1.2*dy[(k0*LEN + k1) % LEN] + 2*sin( y[(k0*LEN + k1) % LEN] ) -2.9*y[(k0*LEN + k1) % LEN] + (  rid == 0 ?  uid( k0*LEN + k1 ):  ute( k0 )   );
	        dy[(k0*LEN + k1 + 1) % LEN] =  dy[( k0*LEN + k1 ) % LEN] + temp * STEPLEN;
            y[(k0*LEN + k1 + 1) % LEN] = y[( k0*LEN + k1 ) % LEN ] + dy[(k0*LEN + k1) % LEN] * STEPLEN;
		}
		yArray[k0+1] = y[LEN - 1];
	}

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -