作为我项目的一部分,我正在尝试在 MSP430上实施矩阵计算-在浏览 DSPLibrary 后,我发现 LEA 仅适用于_Q15格式的矩阵操作。 但是,在固定点表示的文档中,我确实看到,尽管数字表示并存储为16位整数,但我们确实可以移动浮点值并使用“_Q15() ”宏转换它们。 但是,一个关键问题是,我希望保留用作矩阵输入的浮点值,但是, 当我使用包含固定点表示的'_Q15'格式时,我发现自己失去了计算的完整性,这方面的一个例子如下:
当我乘以两个原本是浮点值的'_Q15'值时,我的结果是右移15位-现在, 如果我尝试反向移动以获取原始值-我观察到许多值被转换为相同的16位整数-例如,结果(如32000和32767)都存储为1 -我不确定如何恢复原始值 当换档结束时的值为我提供了两个相对不同的整数值的相同结果。
使用整数时,LEA 当然是平滑的,并提供了所需的结果-但是, 我的矩阵计算是神经网络的一部分,浮点格式的所有权重和偏差都在[0.0,1.0]范围内-是否可以通过 LEA 对这些值实施矩阵运算,同时保持计算的完整性?
我回答了一些问题,讨论如何使用低地球轨道进行矩阵计算,但似乎没有一个问题能解决我在上面所述的问题。 我对 DSPLibrary 如何计算整个计算有点不清楚-如果有任何线索-我非常感谢。
作为一个附注——我的矩阵计算密度与将1*12矩阵与12*12矩阵相乘是第一步——在这项工作之后,所有矩阵的乘法和增加的乘法都具有较低的尺寸——在这种情况下, 使用 LEA 是否有益,或者在矩阵操作中坚持标准 C 代码是否更谨慎? 如果是这样,我选择后者会有任何方法以任何方式或形式利用 LEA 来帮助提高 MSP430的效率。 谢谢。