Lilyanaa Ответов: 1

Транспонирование матрицы в матричном умножении


Я нахожу то,что мне нужно от переполнения стека, и теперь у меня есть вопрос, в чем польза этой функции
   static void transpose_matrix()
{
  int i, j;
   for(i = 0; i<SIZE; i++)
     for(j = 0; j<SIZE;j++)
        b[i][j] = b_to_trans[j][i];
 }

и зачем использовать эти условия ? кто-нибудь может мне объяснить? пожалуйста.

if(i >= SIZE/2) a[i][j] = 2.0;
     b_to_trans[i][j] = 1.0;        //this array in specific
     if(j >= SIZE/2) b[i][j] = 2.0;


Что я уже пробовал:

Я нахожу то, что мне нужно, по этой ссылке c - матричное умножение в MPI - стековом переполнении[^]

1 Ответов

Рейтинг:
4

Kenneth Haugland

В заголовке вы спрашиваете о матричном умножении, в то время как в вопросе вы спрашиваете о транспонировании матрицы. Транспонирование матрицы-это просто переключение строк и столбцов:

TransposeA[i][j]=A[j][i]
Матричное умножение немного более громоздко, так как вам нужно убедиться, что столбцы в первой Матрице имеют равное количество строк во второй матрице. То есть просто выполнить точечное произведение столбца в первой Матрице и строки во второй matix.
$ Результат[я][Дж] = \sum_{К}{А(I,к) \cDOT на Б(к,J)} $

Однако, если скорость вычислений имеет важное значение, то, конечно, было бы лучше реализовать такую математическую библиотеку, как:
Библиотека математического ядра Intel® (Intel® MKL) | программное обеспечение Intel® [^]
или используйте свой графический процессор:
производительность - почему MATLAB так быстро умножает матрицы? - переполнение стека[^]