跳转至

Mat (C) — 打印工具与便捷包装

概述

tiny_mat.h 在重构后的 TinyMath 中服务于两个目的:

  1. 打印工具 — 将矩阵以调试格式输出到串口
  2. 便捷头文件 — 包含所有子模块以保持向后兼容

头文件: #include "tiny_mat.h"


架构

自从将原始的巨型 tiny_mat.c(1920 行)拆分为专用子模块后,tiny_mat.h 现在是一个 薄包装

tiny_mat.h
├── #include "tiny_linalg.h"    → 逐元素运算
├── #include "tiny_cfloat.h"    → 复数运算
├── #include "tiny_decomp.h"    → 矩阵分解
├── #include "tiny_eigen.h"     → 特征值计算
├── #include "tiny_modal.h"     → 模态分析
└── #include "tiny_iterative.h" → Krylov 方法和 RSVD
    (加上 print_matrix 声明)

向后兼容

使用 #include "tiny_mat.h" 的现有代码无需更改即可继续工作——所有函数通过子模块包含重新导出。


打印函数

void print_matrix(const char *name, const float *mat, int rows, int cols);

打印连续矩阵(无 padding,行优先)。

参数 说明
name 矩阵前打印的标签
mat 行优先矩阵数据
rows 行数
cols 列数

输出:

A =
  1.000000   2.000000   3.000000
  4.000000   5.000000   6.000000

void print_matrix_padded(const char *name, const float *mat,
                          int rows, int cols, int step);

打印带行 padding 的矩阵。step = 逻辑列数 + padding。

参数 说明
name 矩阵前打印的标签
mat 行优先矩阵数据
rows 行数
cols 要显示的逻辑列数
step 每行的总元素数(含 padding)

平台支持

两个函数均使用 <stdio.h>printf()——无平台特定的分发。


使用示例

#include "tiny_mat.h"

// 打印 2×3 矩阵
float A[6] = {1, 2, 3, 4, 5, 6};
print_matrix("A", A, 2, 3);

// 带 padding 信息打印相同矩阵
print_matrix_padded("A (padded)", A, 2, 3, 3);  // step = cols(无 padding)

// 所有子模块函数也可用:
tiny_cfloat_t z = tiny_cf(1.0f, 2.0f);

相关页面

有关详细的函数文档,请参阅专用子模块页面:

模块 页面
向量运算 VECTOR API
基础线性代数 LINALG API
复数运算 CFLOAT API
矩阵分解 DECOMP API
特征值与模态 EIGEN API
迭代方法 ITERATIVE API