当前位置:网站首页>Adaptive filter
Adaptive filter
2022-07-05 07:59:00 【feiyingzaishi】
1、LMS Filter Module simulation , Output will diverge , Mainly mu The value selection is inappropriate , Just choose a smaller value
2、 You can put online m File by matlab coder The tool is directly converted to C file ( Can't be used directly , Can be compared with reference )
3、 Revised the online C Code for reference
#include "LMS.h"
/* xn-------- Input signal sequence ( Column vector )
* itr------- The number of iterations , Scalar , The default is xn The length of ,M<itr<sizeof(xn)
* en-------- Error sequence (itr*1) Column vector
* dn-------- Desired response sequence ( Column vector )
* M--------- The order of the filter ( Scalar )
* mu-------- Convergence factor ( step ) Scalar
* W--------- Filter weight matrix , The size is M*itr
* yn-------- Actual output sequence ( Column vector )*/
/*LMS Concrete algorithm */
float * LMS_Filter(int itr, const float *xn, const float *dn, double mu, int length)
{
static int i = 0;
static int k = 0;
static float y = 0.0;
static float en[F_COUNT];
static float W[M][F_COUNT];
static float x[M];
static float yn[F_COUNT];
/* Create a en All zero matrix ,en(k) It means the first one k The error between the expected output and the actual input in the second iteration */
for (i=0; i<itr; i++)
{
en[i] = 0;
}
/* Create a W All zero matrix , Each line represents a weighting parameter , Each column represents an iteration */
for (i=0; i<M; i++)
for (k=0; k<itr; k++)
W[i][k] = 0;
/* Create a x All zero matrix */
for (i=0; i<M; i++)
x[i] = 0;
/* Iterative calculation */
for (k=M; k<=itr; k++)
{
/* filter M Input of two taps : from xn The first k-1 Take out the values in reverse order M Put the values of samples into x
* y Output for filter :W Of the K-2 Column and x Sum of products of */
for (i=0; i<M; i++)
{
x[i] = xn[k-i-1];
y += W[i][k-2] * x[i];
}
en[k-1] = dn[k-1] - y; // The first k The error of each iteration
/* Iterative formula for filter weight calculation */
for (i=0; i<M; i++)
{
W[i][k-1] = W[i][k-2] + 2*mu*en[k-1]*x[i];
}
y = 0.0;
}
/* Create a yn Full infinite matrix , Dimension and xn equally */
for (i=0; i<itr; i++)
{
yn[i] = 0.0;
}
/* When finding the optimal output sequence of the filter */
for (k=M; k<=length; k++)
{
for (i=0; i<M; i++)
{
x[i] = xn[k-i-1];
y += W[i][k-2]*x[i];
}
yn[k-1] = y;
y = 0.0;
}
return yn;
}
边栏推荐
- Network communication model -- Network OSI tcp/ip layering
- Global and Chinese markets for flexible endoscopic lithotripsy devices 2022-2028: Research Report on technology, participants, trends, market size and share
- Gradle复合构建
- C#,数值计算(Numerical Recipes in C#),线性代数方程的求解,LU分解(LU Decomposition)源程序
- Embedded composition and route
- How to migrate the device data accessed by the RTSP of the easycvr platform to easynvr?
- 通过sql语句统计特定字段出现次数并排序
- Can't find real-time chat software? Recommend to you what e-commerce enterprises are using!
- Global and Chinese markets of large aperture scintillators 2022-2028: Research Report on technology, participants, trends, market size and share
- Detailed explanation of C language pointer
猜你喜欢
Drive LED -- GPIO control
Altium designer 19.1.18 - clear information generated by measuring distance
Reasons for rapid wear of conductive slip rings
Interview catalogue
Shell script basic syntax
Measurement fitting based on Halcon learning [III] PM_ measure_ board. Hdev routine
Factors affecting the quality of slip rings in production
生产中影响滑环质量的因素
UEFI development learning 3 - create UEFI program
Altium Designer 19.1.18 - 隐藏某一个网络的飞线
随机推荐
Network communication model -- Network OSI tcp/ip layering
Makefile application
Altium Designer 19.1.18 - 清除测量距离产生的信息
How to excavate and research ideas from the paper
Global and Chinese markets of nano biosensors 2022-2028: Research Report on technology, participants, trends, market size and share
如何进行导电滑环选型
Altium designer 19.1.18 - clear information generated by measuring distance
Global and Chinese markets for flexible endoscopic lithotripsy devices 2022-2028: Research Report on technology, participants, trends, market size and share
Shape template matching based on Halcon learning [9] PM_ multiple_ dxf_ models. Hdev routine -- [read and write XLD from DXF file]
QT's excellent articles
Cadence learning records
RTOS in the development of STM32 single chip microcomputer
Fundamentals of C language
UEFI development learning 6 - creation of protocol
找不到实时聊天软件?给你推荐电商企业都在用的!
Train your dataset with yolov4
Process communication mode between different hosts -- socket
Temperature sensor DS18B20 principle, with STM32 routine code
TCP and UDP
How to define guid in AMI code