Matrix multiplication code
The following code is to illustrate the matrix multiplication method mentioned previously. For simplicity sake, I’m limiting the size of the matrices to 3.
const int cnSize = 3;
int[,] A = new int[cnSize, cnSize];
int[,] B = new int[cnSize, cnSize];
int[,] C = new int[cnSize, cnSize];
int[] x = new int[cnSize];
int[] y = new int[cnSize];
Random rand = new Random();
int i, j, k;
// fill matrix and vector with random values
for (i = 0; i < cnSize; ++i)
{
for (j = 0; j < cnSize; ++j)
{
A[i, j] = rand.Next(1, 10);
B[i, j] = rand.Next(1, 10);
}
x[i] = rand.Next(1, 10);
}
// matrix-vector multiplication
for (i = 0; i < cnSize; ++i)
{
y[i] = 0;
for (k = 0; k < cnSize; ++k)
{
y[i] += A[i, k] * x[k];
}
}
// matrix-matrix multiplication
for (i = 0; i < cnSize; ++i)
{
for (j = 0; j < cnSize; ++j)
{
C[i, j] = 0;
for (k = 0; k < cnSize; ++k)
{
C[i, j] += A[i, k] * B[k, j];
}
}
}
Console.WriteLine("Matrix-vector multiplication");
for (i = 0; i < cnSize; ++i)
{
Console.Write("[");
for (j = 0; j < cnSize; ++j)
{
Console.Write(" {0}", A[i, j].ToString().PadLeft(3));
}
Console.WriteLine("][{0}] {1} [{2}]", x[i].ToString().PadLeft(3), ((cnSize / 2) == i ? "=" : " "), y[i].ToString().PadLeft(3));
}
Console.WriteLine();
Console.WriteLine("Matrix-matrix multiplication");
for (i = 0; i < cnSize; ++i)
{
Console.Write("[");
for (j = 0; j < cnSize; ++j)
{
Console.Write(" {0}", A[i, j].ToString().PadLeft(3));
}
Console.Write("][");
for (j = 0; j < cnSize; ++j)
{
Console.Write(" {0}", B[i, j].ToString().PadLeft(3));
}
Console.Write("] {0} [", ((cnSize / 2) == i ? "=" : " "));
for (j = 0; j < cnSize; ++j)
{
Console.Write(" {0}", C[i, j].ToString().PadLeft(3));
}
Console.WriteLine("]");
}
Console.WriteLine();
You will notice there’s a lot of nested for loops. Get used to it. Here’s a screenshot of the output:

Exercise: Explain what this does. (a ternary operator refresher might help)
((cnSize / 2) == i ? "=" : " ")
Comments
2 Responses to “Matrix multiplication code”
Leave a Reply












This is one thing to like about MATLAB. Matrix multiplication is *easy*! With 2 matrices, matrix multiplication is as easy as:
C = A * B;
As we say: “Life is too short for DO loops.”
@Will: C = A * B;
Hey, that’s cheating!! *Real* programmers use loops. *smile*