C#矩阵运算类库 -- 一些补充
Posted Thomas会写字
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#矩阵运算类库 -- 一些补充相关的知识,希望对你有一定的参考价值。
重点补充,发现原类中没有深度复制(也许是我没找到。。。)
于是修改如下
MatrixAlgebra --> Matrix.cs --> Initialize函数
private void Initialize(double[,] Elements)
{
elements = Elements.CopyMatrix();
SubMat = new MatrixSubset(elements);
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using LinearAlgebra;
using LinearAlgebra.VectorAlgebra;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
double[] d1 = new double[20];
double[] d2 = new double[20];
for (int i = 0; i < 20; i++)
{
d1[i] = i;
d2[i] = i*i;
}
// 矩阵的创建
Matrix A = Matrix.Create(4, 5, d1);
Matrix B = Matrix.Create(4, 5, d2);
Matrix Mat = Matrix.Create(2, 2, new double[] { 1, 2, 3, 4 });
// 矩阵的深度复制
Matrix C = new Matrix(A.Elements);
// 矩阵元素获取修改
double[,] D = A.Elements;
double dData = C.ElementAt(2);
A[1, 1] = 666;
A.SetColumn(1, B.GetColumn(1));
// 向量处理
Vector v1 = Vector.Range(VectorType.Row, 2, 10, 0.1);
Vector v2 = Vector.Range(VectorType.Row, 1, 10, 0.1);
Vector v3 = v1 * v2;
// 元素获取
double[] dVec = v3.Elements;
Console.WriteLine(A);
Console.WriteLine(C);
Console.WriteLine(v3);
}
}
}
以上是关于C#矩阵运算类库 -- 一些补充的主要内容,如果未能解决你的问题,请参考以下文章