基于C#的软件大杂烩(3.1)—— 线性拟合工具
前面人工智能导论(2)——基本算法程序编写——回归介绍了Python中使用线性拟合工具,我就想在C#中能不能做一个线性拟合工具,方便我们进行线性拟合。
界面布局和基础准备

我们简单的绘制一个窗体,其中可以进行选择数据,显示原始数据以及进行数据拟合。
其中的存放数据的容器使用的是DataGripView,其他的应该都很熟悉。
之前在设计串口示波器的时候,我们引入了MathNet数学库,本期我们也是利用MathNet库中的方法进行数据拟合。
using MathNet.Numerics.LinearAlgebra; using MathNet.Numerics.LinearAlgebra.Double; using MathNet.Numerics.LinearRegression;
导入我们的MathNet相关库(在NuGet中获取)
除此之外我们还需要安装其他的几个库,也在NuGet管理库中添加。
CsvHelper,EPPlus
这两个库可以帮助我们解析CSV文件和EXCEL文件。
功能编写
private void DataChoose_Click(object sender, EventArgs e)
{
using (OpenFileDialog openFileDialog = new OpenFileDialog())
{
openFileDialog.Filter = "CSV Files (*.csv)|*.csv|Excel Files (*.xls;*.xlsx)|*.xls;*.xlsx|All Files (*.*)|*.*";
DialogResult result = openFileDialog.ShowDialog();
if (result == DialogResult.OK)
{
string selectedFilePath = openFileDialog.FileName;
LoadDataFromSelectedFile(selectedFilePath);
}
}
}
当我们点击按钮的时候,唤醒资源管理器,选择我们的CSV文件或者Excel文件,并且将文件路劲作为变量传递给LoadDataFromSelectedFile函数。
当我们点击数据显示按钮的时候,先检查我们的XY轴是否已经选择,如果没有选择我们则进行报错,并退出函数。
如果选择没有问题的话,我们就先检测数据是否有异常(这里应该添加更多的判断逻辑)之后根据我们选择的XY轴来将数据打印到Chart上作为原始数据。
当我们点击拟合按钮,我们从波形图中获取各个点的数据保存到列表中,之后调用数学库中的线性拟合函数,将XY作为参数传入。
效果展示
regression 的两个成员item1和item2分别是截距和斜率,根据我们的截距和斜率来画出我们的线性拟合曲线。



登录 或 注册 后才可以进行评论哦!
还没有评论,抢个沙发!