Last active
July 4, 2017 00:07
-
-
Save sbugrov/b40f6852654e1d95379a1bdc341781f3 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
vector <float> dot (const vector <float>& m1, const vector <float>& m2, | |
const int m1_rows, const int m1_columns, const int m2_columns) { | |
/* Returns the product of two matrices: m1 x m2. | |
Inputs: | |
m1: vector, left matrix of size m1_rows x m1_columns | |
m2: vector, right matrix of size m1_columns x m2_columns | |
(the number of rows in the right matrix must be equal | |
to the number of the columns in the left one) | |
m1_rows: int, number of rows in the left matrix m1 | |
m1_columns: int, number of columns in the left matrix m1 | |
m2_columns: int, number of columns in the right matrix m2 | |
Output: vector, m1 * m2, product of two vectors m1 and m2, | |
a matrix of size m1_rows x m2_columns | |
*/ | |
vector <float> output (m1_rows*m2_columns); | |
for( int row = 0; row != m1_rows; ++row ) { | |
for( int col = 0; col != m2_columns; ++col ) { | |
output[ row * m2_columns + col ] = 0.f; | |
for( int k = 0; k != m1_columns; ++k ) { | |
output[ row * m2_columns + col ] += m1[ row * m1_columns + k ] * m2[ k * m2_columns + col ]; | |
} | |
} | |
} | |
return output; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment