【发布时间】:2020-09-10 11:29:18
【问题描述】:
我一直在开发一个实时工作的 C 语言控制软件。该软件实现了受控系统的离散状态空间观察器等。为了实现观察者,有必要计算 4x4 维度的矩阵的逆矩阵。逆矩阵计算必须每 50 微秒进行一次,值得一提的是,在此期间还会进行其他相当耗时的计算。所以逆矩阵计算必须消耗少于 50 微秒的时间。还需要说的是,使用的DSP没有支持浮点运算的ALU。
我一直在寻找一些有效的方法来做到这一点。我的一个想法是准备计算矩阵4x4行列式的通用公式和计算4x4矩阵伴随矩阵的通用公式,然后根据下面给出的公式计算逆矩阵。
您如何看待这种方法?
【问题讨论】:
-
你试过你的方法了吗?如果没有,为什么不呢?如果是,它是否满足您的性能要求?
-
等式中缺少一些部分:真实世界的 CPU、时钟速度、它正在做的其他工作、中断延迟、它如何读取/写入数据结果、数据格式等。从找出现实世界的硬件限制开始。
-
@Steve 如果要求它应该在不支持浮点的机器上执行低于 50 毫秒,那么这是一个非常重要的事情,应该是问题的一部分。
-
您的目标是否可以使用浮点运算?定点算术可用吗?它是哪个DSP?我们需要一些规格。
-
对于问题的定点部分,有几个地方可以获得有关如何调整 C 程序以与定点处理器兼容的信息。这里有几个:(第一个似乎最实用。)fixed-point math in C、FloatingPointtoFixedPointConversionofC Code、Converting between integer and float data representations。
标签: c matrix embedded matrix-inverse