实际测试过程中的设定值,与系统测量测试值不一致,如何通过修正系数或者采用什么函数来保证设定值和系统测量值一致呢?目前手上有设定值,系统测量值的对应表格 离散的;采用什么编程方式?
引用 皆我百晓生 小程序回复内容作答:
想要拟合设定值和测量值,可以通过线性回归或者非线性回归的方法来求取修正系数。线性回归适用于设定值和测量值之间的关系是线性的情况,而非线性回归适用于设定值和测量值之间的关系是非线性的情况。
在C#中,可以使用数值计算库来进行回归分析,例如Math.NET Numerics库。以下是一个使用Math.NET Numerics库进行线性回归的示例:
// 引用Math.NET Numerics库
using MathNet.Numerics.LinearRegression;
// 设定值
double[] settings = new double[] { 1, 2, 3, 4, 5 };
// 测量值
double[] measurements = new double[] { 1.1, 2.2, 3.2, 4.8, 4.9 };
// 创建线性回归模型
double[][] inputs = settings.Select(x => new double[] { x }).ToArray();
double[] outputs = measurements;
LinearRegression lr = new LinearRegression();
lr.Regress(inputs, outputs);
// 获取修正系数
double slope = lr.Coefficients[0]; // 斜率
double intercept = lr.Intercept; // 截距
// 根据修正系数修正设定值
double correctedValue = slope * inputValue + intercept;
如果设定值和测量值之间的关系是非线性的,可以尝试使用非线性回归方法,例如使用Math.NET Numerics库中的NonlinearRegression类。具体的实现方法会根据具体的非线性模型而有所不同。
总之,在C#中可使用Math.NET Numerics或其他数值计算库来实现拟合设定值和测量值的过程。
此问题貌似无法回答,几乎所有的机械电子专业都得学一门课“数字信号处理”
而这门课入门第一课就是告诉你“测量是有误差的”,所以才需要“数字信号处理”这门课
所以回答是“没有啥公式可以保证完全一致”,只能通过各种滤波将信号尽可能符合要求,而且不是靠近“设定值”,测量有误差俺们也没办法去把粉饰到没有误差,你的承认有误差。然后是尽可能用算法滤掉误差