前言
矩阵在数据处理中有非常广泛的应用,本文主要记录在C#中应用矩阵来处理数据,在后续学到新的相关内容会不时对本文进行更新。
一. 给矩阵添加行列
在数据质量控制中经常会使用滑窗方法,此时对边界层数据就要添加行或列,本部分即为对数据添加行/列的实现方式
csharp
using MathNet.Numerics.LinearAlgebra.Single;
namespace MyConsoleAPPTest
{
class Program
{
private bool addMatrix(out DenseMatrix denseMatrix)
{
// 创建矩阵并初始化
float[,] matrix = new float[3,3]{{1,2,3},{4,5,6},{7,8,9}};
DenseMatrix denseMatrix = DenseMatrix.OfArray(matrix);
int rowCount = denseMatrix.RowCount;
// 上下加一行
var rowEndSub = denseMatrix.SubMatrix(0, 1, 0, 3);//第0行开始取1行,第0列开始取3列
var rowStartSub = denseMatrix.SubMatrix(rowCount - 1, 1, 0, 3);
denseMatrix = (DenseMatrix)denseMatrix.Stack(rowEndSub); // 会加到后行
denseMatrix = (DenseMatrix)rowStartSub.Stack(denseMatrix);
// 左右各加一列
var colMat = DenseMatrix.Create(rowCount+2, 1, float.NaN);
denseMatrix = (DenseMatrix)colMat.Append(denseMatrix); // 以列加入
denseMatrix = (DenseMatrix)denseMatrix.Append(colMat);
return true;
}
static void Main(string[] args)
{
Program p = new Program();
p.addMatrix(out DenseMatrix denseMatrix);
}
}
}
输出的矩阵会在原来矩阵的第一行前加入其最后一行,最后一行加入其第一行,左边和右边分别加入一列NaN。
2024.10.16 16:19