这几天由于工作关系,需要在IAR中用到各种操作,因而需要引入外部库。最后发现实际并非一个简单的工作,有很多问题,做一下简单记录。
需求:至少5*5的矩阵操作,可切片、赋值、乘法、求逆。
Eigen
一开始只想用Eigen,因为之前听过无数次其大名。后续查找中,还发现这个是header-only library,很符合强迫症的代码美学。
然而,遇到大量困难:
- IAR 本身非常不支持这样的大型库的引入,需要手动创建库层级,
add file
和add gorup
(创建文件夹);手动添加花了很久 - Eigen库的最外层的头文件,没有.h的拓展名(后来发现这并不是问题)
- 出现各种编译错误,后尝试跟随这里的做法https://stackoverflow.com/questions/62442225/how-to-install-eigen-library-to-iar-c-c-compiler
其中具体是跟着 chtz 和 Fiebbo 两个人的操作,但仍任无法成功
linalg
这是另一个找到的single header library,非常轻量化,个人挺喜欢。https://github.com/sgorsten/linalg?tab=readme-ov-file#type-aliases
然而非常遗憾,该库只能支持最大44的矩阵操作(我需要至少55)。看了一下实现,都是硬编码解析地写出来的,如果让我自己来实现,估计也是写成这样。因此,这个也用不了
目前
打算继续找找其他Library,真是神奇,其他人一般怎么在MCU上跑矩阵处理的?