double [,], int [], bool [] ... matrix, расширения векторной манипуляции в C # - PullRequest
1 голос
/ 14 сентября 2009

Мне нужно (для быстрого прототипирования и интеграции библиотек) что-то вроде этого (расширения для обычных массивов)


double[] d;
d.SetRow(1,{ 1.1 , 2.0 ,3.3});
var r = d.GetRow(1);
d = d.AppendRight(new int[]{1,2,3});
...

Существует ли такая вещь где-нибудь? Может быть, кто-нибудь реализовал это, так что мне самому не нужно, я сам?

Ответы [ 4 ]

3 голосов
/ 14 сентября 2009

Взгляните на Math.NET . Это математическая библиотека с открытым исходным кодом. Вы, вероятно, найдете то, что вам нужно.

У них есть пример использования матрицы в конце этой страницы .

0 голосов
/ 28 сентября 2009

Я написал Matrix Extensions C # библиотека для тестирования расширений на основе разработки кода.

0 голосов
/ 14 сентября 2009

Это не должно быть слишком сложно, чтобы написать самостоятельно.

Особое внимание следует уделить тому, как массивы можно редактировать как свойства.

Что-то вроде (очень грубый непроверенный код, но должен дать вам представление):

public class ArrayRow<T> {
    //add your own ..ctor etc

    T[,] matrix; //don't make this public see http://msdn.microsoft.com/en-us/library/k2604h5s.aspx
    public int Index { get; private set; }

    //note that this will be a copy
    public T[] GetValues() {
        T[] retval = new T[matrix.GetLength(1)];
        for ( int i = 0; i < retval.Length; i++ )
           retval[i] = matrix[Index, i];

        return retval;
    }

    public void SetValues(T[] values)
    //..and so on, you get the idea
}

Затем вы расширяете массив:

public static ArrayExtensions {

    public void SetRow<T> ( this T[,] matrix, int rowIndex, T[] values ) {
        //check rowIndex in range and array lengths match
    }

    public ArrayRow<T> GetRow<T> ( this T[,] matrix, int rowIndex ) {
        //check rowIndex in range
        return new ArrayRow<T> ( matrix, rowIndex );
    }
}

Тогда вы можете рассчитывать на вывод параметра типа.

0 голосов
/ 14 сентября 2009

Языки, такие как списки поддержки Python со смешанными типами. Вы можете создать скрипт IronPython, а затем вызвать его из своего приложения на C #. Перейдите по этой ссылке , чтобы узнать, как вызывать скрипт IronPython из своего приложения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...