No hay funciones de matriz integradas en C#, pero las hay en el paquete de potencia F #.Acerca del uso de F # para crear un conjunto de Matrix utilizable desde C#
En lugar de usar una biblioteca C# de un tercero o de código abierto, me pregunto si puedo hacer mi propia entrada en F # y exponer los bits útiles a C#.
Me pregunto si alguien ya ha pensado en esto, o lo ha intentado, y si es una buena idea.
¿Debería exponerlo como una clase o como una carga de funciones estáticas?
¿O debería crear una clase contenedora C# y tener esa llamada a F #? ¿O el F # usa la clase C# como entrada y salida?
¿Alguna idea?
respuesta gracias a Hath a continuación: se puede usar la biblioteca # F directamente en C# (operadores, así!):
using System;
using System.Text;
using Microsoft.FSharp.Math;
namespace CSharp
{
class Program
{
static void Main(string[] args)
{
double[,] x = { { 1.0, 2.0 }, { 4.0, 5.0 } };
double[,] y = { { 1.0, 2.0 }, { 7.0, 8.0 } };
Matrix<double> m1 = MatrixModule.of_array2(x);
Matrix<double> m2 = MatrixModule.of_array2(y);
var mp = m1 * m2;
var output = mp.ToArray2();
Console.WriteLine(output.StringIt());
Console.ReadKey();
}
}
public static class Extensions
{
public static string StringIt(this double[,] array)
{
var sb = new StringBuilder();
for (int r = 0; r < array.Length/array.Rank; r++)
{
for (int c = 0; c < array.Rank; c++)
{
if (c > 0) sb.Append("\t");
sb.Append(array[r, c].ToString());
}
sb.AppendLine();
}
return sb.ToString();
}
}
}
Excelente idea. Lo probaré, aunque sospecho que no obtendré operadores por ese precio. – Benjol