Как создать плотную матрицу из массива uint[,]

Я пытаюсь создать DenseMatrix в MathDotNet из массива uint с двумя измерениями.

uint[10,10] = myarray;
Matrix<ushort> newarray = Matrix<ushort>.Build.DenseOfArray(myarray);

Mathdotnet жалуется на то, что это еще не реализовано. Реализованы только матрицы с плавающей запятой. Я хотел бы сделать следующее:

uint[10,10] = myarray;
Matrix<double> newarray = Matrix<double>.Build.DenseOfArray(myarray);

Но это не удается, потому что myarray имеет другой тип, чем Matrix. Есть ли способ неявно преобразовать мой массив uint в double, чтобы решить эту проблему?

Спасибо за любые подсказки!


person Georg W.    schedule 13.07.2018    source источник
comment
Вы хотите, чтобы newarray использовал целочисленную арифметику или арифметику с плавающей запятой в последующих вычислениях?   -  person phv3773    schedule 14.07.2018
comment
Я хотел бы использовать арифметику с плавающей запятой. Вот и причина конверсии.   -  person Georg W.    schedule 15.07.2018


Ответы (1)


Я не думаю, что кастинг может работать в этом случае, но есть механизм построения матрицы из произвольного индексируемого источника:

Matrix<double> newarray = Matrix<double>.Build.Dense(
    myarray.GetLength(0), myarray.GetLength(1), (i,j) => myarray[i,j]);
person Christoph Rüegg    schedule 16.07.2018