• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
MKT-porter
博客园    首页    新随笔    联系   管理    订阅  订阅
(3) esp8266 官方库文件,没有求逆函数

下载库文件

 

#include <MatrixMath.h>


#define N  (2)

mtx_type A[N][N];
mtx_type B[N][N];
mtx_type C[N][N];
mtx_type v[N];      // This is a row vector
mtx_type w[N];

mtx_type maxVal = 10;  // maxValimum 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(maxVal) - maxVal / 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((mtx_type*)A, (mtx_type*)B, N, N, N, (mtx_type*)C);

	Serial.println("\nAfter multiplying C = A*B:");
	Matrix.Print((mtx_type*)A, N, N, "A");

	Matrix.Print((mtx_type*)B, N, N, "B");
	Matrix.Print((mtx_type*)C, N, N, "C");
	Matrix.Print((mtx_type*)v, N, 1, "v");

	Matrix.Add((mtx_type*) B, (mtx_type*) C, N, N, (mtx_type*) C);
	Serial.println("\nC = B+C (addition in-place)");
	Matrix.Print((mtx_type*)C, N, N, "C");
	Matrix.Print((mtx_type*)B, N, N, "B");

	Matrix.Copy((mtx_type*)A, N, N, (mtx_type*)B);
	Serial.println("\nCopied A to B:");
	Matrix.Print((mtx_type*)B, N, N, "B");

	Matrix.Invert((mtx_type*)A, N);
	Serial.println("\nInverted A:");
	Matrix.Print((mtx_type*)A, N, N, "A");

	Matrix.Multiply((mtx_type*)A, (mtx_type*)B, N, N, N, (mtx_type*)C);
	Serial.println("\nC = A*B");
	Matrix.Print((mtx_type*)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((mtx_type*)C, (mtx_type*)v, N, N, 1, (mtx_type*)w);
	Serial.println("\n C*v = w:");
	Matrix.Print((mtx_type*)v, N, 1, "v");
	Matrix.Print((mtx_type*)w, N, 1, "w");

	while(1);
}

  

posted on 2019-05-01 18:05  MKT-porter  阅读(411)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3