我在C#中使用高级矩阵库。净@ http://www.codeproject.com/KB/recipes/AdvancedMatrixLibrary.aspx?msg=4042613#xx4042613xx.
库css文件就像
using System;
namespace MatrixLibrary
{
public class Matrix
{
private double[,] in_Mat;
public Matrix(int noRows, int noCols)
{
this.in_Mat = new double[noRows, noCols];
}
public Matrix(double [,] Mat)
{
this.in_Mat = (double[,])Mat.Clone();
}
public static double[,] Identity(int n)
{
double[,] temp = new double[n,n];
for (int i=0; i<n;i++) temp[i,i] = 1;
return temp;
}
public static double[,] ScalarDivide(double Value, double[,] Mat)
{
int i, j, Rows, Cols;
double[,] sol;
try {Find_R_C(Mat, out Rows, out Cols);}
catch{throw new MatrixNullException();}
sol = new double[Rows+1, Cols+1];
for (i = 0; i<=Rows;i++)
for (j = 0; j<=Cols;j++)
sol[i, j] = Mat[i, j] / Value;
return sol;
}
}}
我正在尝试获取单位矩阵并获得类型转换的错误。有人可以指导我。
Matrix id_mat = MatrixLibrary.Matrix.Identity(6);
无法将typedouble [,]转换为Matrix。
但是
Matrix B = new Matrix(4, 4);
Random rnd = new Random();
for (int i = 0; i < B.NoRows; i++)
for (int j = 0; j < B.NoCols; j++)
B[i, j] = 2 * rnd.NextDouble();
Matrix E = Matrix.ScalarDivide(2, B);
它有效,我可以有一个矩阵。请指导我?
的问候,
答案 0 :(得分:2)
阅读错误消息。
您有一个返回double[,]
的方法,并且您尝试将引用存储在Matrix
的变量中。没有从多维数组的双精度到Matrix的隐式转换。
要使用该方法,您可以编写
double[,] id_max = MatrixLibrary.Maxtrix.Identify(6);
如果您确实需要将其存储为Matrix
,则需要定义相应的转换。
答案 1 :(得分:0)
该函数返回一个2D数组“double [,]”,并且您尝试将其分配给“Matrix”。没有隐式转换可以做到这一点。 Matrix有一个接受“double [,]”的构造函数吗?也许你可以使用它。
编辑:您可能还会发现一个不同的矩阵库比一个拉出CodeProject的矩阵库更适合您。 Math.NET Numerics是一个很好用的,我也用它也是开源的:http://numerics.mathdotnet.com/
答案 2 :(得分:0)
你需要隐式演员。
public static implicit operator Matrix(double[,] m)
{
// code to convert
}