2014-11-26 2 views
0

Имея матрицу, как это в C#C# Fast Matrix Манипуляция

double[,] M 

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

for i = 1:N 
    M(i, 1:i) = 1; 

Я хотел бы иметь его эквивалент в C# без второго цикла. Я не уверен в этом, но, насколько мне известно, Matlab использует процесс, называемый Vectorization для этой строки M(i, 1:i) = 1, который быстрее, чем я реализую цикл for от 1 до i, устанавливая каждую ячейку равным 1. Возможно, я ошибаюсь , пожалуйста, поправьте меня.

Итак, как можно добиться быстрой обработки матриц в C#, таких как Matlab.

ответ

1

Общим решением является использование библиотеки матриц типа math.net numerics для операций с матрицами.

+0

hm, я вижу ... Я думал, что есть что-то более простое, чтобы обойти цикл for, что-то уже есть у родных библиотек C#. Будет ли эта библиотека сделать эту строку M (i, 1: i) = 1 фактически быстрее, чем цикл for? Или больше для предоставления нескольких удобных небольших алгоритмов и сделать синтаксис кода более абстрактным. – Chris

+0

Большинство этих пакетов являются обертками для библиотек, написанных на C или Fortran. Если я правильно читаю документы, у вас есть три варианта базового механизма линейной алгебры: GotoBLAS, Intel MKL или AMD ACML. GoBLAS является некоммерческим. MKL является коммерческим, но отличается тем, что является самой быстрой матричной библиотекой на процессорах Intel. И я нашел это заявление об отказе от ответственности: http://numerics.mathdotnet.com/docs/Matrix.html#Context-Linear-Algebra – ahoffer

+0

Я был на одной и той же странице, читающей :). Спасибо, я думаю, что такой подход приведет к правильному ответу на мой вопрос. – Chris