• 大小: 3KB
    文件类型: .c
    金币: 1
    下载: 0 次
    发布日期: 2021-06-07
  • 语言: C/C++
  • 标签: FxLMS  

资源简介

利用C语言描述的FxLMS算法是进行实际控制的基础。利用C语言仿真控制算法。

资源截图

代码片段和文件信息

#include
#include
#include
#define PI     3.141592653589793
#define N      2000
#define f1     100
#define f2     200
#define FS     2000.0
#define JMax 4
#define KMax 4
#define LMax 120
#define M 4
double Hs[JMax*KMax][M] = {
{ 0 0.01 1 0.5 }
{ 0 0 1.1 0.6 }
{ 0 0 1 0.55 }
{ 0 0 1 0.6 }
{ 0 0 1 0.32 }
{ 0 0.1 1 0.11 }
{ 0 0 1 0.25 }
{ 0 0 1 0.15 }
{ 0 0 1 0.35 }
{ 0 0 1 0.4 }
{ 0 0 1 0.4 }
{ 0 0 1 0.36 }
{ 0 0 1 0.45 }
{ 0 0 1 0.5 }
{ 0 0 1 0.5 }
{ 0 0 1 0.46 }
};
double Hs_m[JMax*KMax][M] = {
{ 0 0 1.0 0.5 }
{ 0 0 1 0.6 }
{ 0 0 1 0.6 }
{ 0 0 0.9 0.6 }
{ 0 0 1 0.3 }
{ 0 0 1 0.1 }
{ 0 0 1.1 0.25 }
{ 0 0 1 0.18 }
{ 0 0 1.2 0.35 }
{ 0 0 1 0.45 }
{ 0 0 0.95 0.4 }
{ 0 0 1 0.38 }
{ 0 0 1.3 0.45 }
{ 0 0 1 0.58 }
{ 0 0 0.9 0.5 }
{ 0 0 1 0.48 }
};

double hp[KMax][8] = {
{ 0 0 0 0 0 1 -0.3 0.2 }
{ 0 0 0 0 0 1 -0.2 0.1 }
{ 0 0 0 0 0 1 -0.2 0.2 }
{ 0 0 0 0 0 1 -0.3 0.1 }
};
double output[JMax][M] = { 0 };
double X[LMax] = { 0 };
double W[JMax][LMax] = { 0.25 };
double F[JMax*KMax][LMax] = { 0 };
double a[KMax] = { 0 };
double d[KMax] = { 0 };
double e[KMax] = { 0 };
double Y[JMax] = { 0 };

void shiftArray(double* x int length)
{
int i;
for (i = length - 1; i > 0; i--)
{
x[i] = x[i - 1];
}
}

double dotProd(const double* x const double* y int length)
{
double sum = 0.0;
int i;
for (i = 0; i < length; i++)
{
sum += x[i] * y[i];
}
return sum;
}


评论

共有 条评论