初始化提交
This commit is contained in:
@@ -0,0 +1,76 @@
|
||||
#include <MatrixMath.h>
|
||||
|
||||
|
||||
#define N (2)
|
||||
|
||||
float A[N][N];
|
||||
float B[N][N];
|
||||
float C[N][N];
|
||||
float v[N]; // This is a row vector
|
||||
float w[N];
|
||||
|
||||
float max = 10; // maximum random matrix entry range
|
||||
|
||||
void setup()
|
||||
{
|
||||
Serial.begin(9600);
|
||||
|
||||
// Initialize matrices
|
||||
for (int i = 0; i < N; i++)
|
||||
{
|
||||
v[i] = i + 1; // vector of sequential numbers
|
||||
for (int j = 0; j < N; j++)
|
||||
{
|
||||
A[i][j] = random(max) - max / 2.0f; // A is random
|
||||
if (i == j)
|
||||
{
|
||||
B[i][j] = 1.0f; // B is identity
|
||||
}
|
||||
else
|
||||
{
|
||||
B[i][j] = 0.0f;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void loop()
|
||||
{
|
||||
|
||||
Matrix.Multiply((float*)A, (float*)B, N, N, N, (float*)C); //矩阵乘法
|
||||
|
||||
Serial.println("\nAfter multiplying C = A*B:");
|
||||
Matrix.Print((float*)A, N, N, "A");
|
||||
|
||||
Matrix.Print((float*)B, N, N, "B");
|
||||
Matrix.Print((float*)C, N, N, "C");
|
||||
Matrix.Print((float*)v, N, 1, "v");
|
||||
|
||||
Matrix.Add((float*) B, (float*) C, N, N, (float*) C); //矩阵加法
|
||||
Serial.println("\nC = B+C (addition in-place)");
|
||||
Matrix.Print((float*)C, N, N, "C"); //串口打印矩阵C
|
||||
Matrix.Print((float*)B, N, N, "B"); //串口打印矩阵B
|
||||
|
||||
Matrix.Copy((float*)A, N, N, (float*)B); //复制矩阵A到矩阵B
|
||||
Serial.println("\nCopied A to B:");
|
||||
Matrix.Print((float*)B, N, N, "B"); //串口打印矩阵B
|
||||
|
||||
Matrix.Invert((float*)A, N); //矩阵求逆
|
||||
Serial.println("\nInverted A:");
|
||||
Matrix.Print((float*)A, N, N, "A");
|
||||
|
||||
Matrix.Multiply((float*)A, (float*)B, N, N, N, (float*)C);
|
||||
Serial.println("\nC = A*B");
|
||||
Matrix.Print((float*)C, N, N, "C");
|
||||
|
||||
// Because the library uses pointers and DIY indexing,
|
||||
// a 1D vector can be smoothly handled as either a row or col vector
|
||||
// depending on the dimensions we specify when calling a function
|
||||
Matrix.Multiply((float*)C, (float*)v, N, N, 1, (float*)w);
|
||||
Serial.println("\n C*v = w:");
|
||||
Matrix.Print((float*)v, N, 1, "v");
|
||||
Matrix.Print((float*)w, N, 1, "w");
|
||||
|
||||
while(1);
|
||||
}
|
||||
Reference in New Issue
Block a user