This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] LP-MSPM0L1306:CCS、IQMath、1D 内插

Guru**** 2448780 points
Other Parts Discussed in Thread: MSPM0L1306

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1203027/lp-mspm0l1306-ccs-iqmath-1d-interpolation

器件型号:LP-MSPM0L1306
主题中讨论的其他器件:MSPM0L1306

CCS IQMath 1D 内插

使用 CCS 12.2.0

mspm0_SDK_0_57_00_00_eng

是否有一种使用 IQMath 或其他库进行1D 内插的简单方法?

谢谢。

黄昌河

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Chang He:

    IQmath 库利用基本数学函数、允许快速浮点计算。 如果您想执行某种线性内插、则必须创建公式并利用 IQmath 库函数来提高处理速度。  

    例如、要基于2个点获得斜率、可以使用公式(Y2 - Y1)/(X2 - X1)并使用 IQmath 加速浮点计算。  

    //Initialize variables, using global type for example
    _iq qY2, qY1, qX2, qX1; 
    qY2 = _IQ(2.5);
    qY1 = _IQ(1.0);
    qX2 = _IQ(4.5);
    qX1 = _IQ(3.0);
    
    _iq deltaY = qY2 - qY1;
    _iq deltaX = qX2 - qX1;
    
    _iq slope = _IQdiv(deltaY, deltaX);
    
    _iq intercept = qY2 - _IQmpy(slope, qX2);
    
    

    此致、

    Luke

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Luke、您好:

    感谢您的快速回复。

    我需要创建一个包含32个元素的数组、即32 X 的表和32 Y 的表、并从某个 x 进行线性内插以获得 y 值、类似于 用于计算 正弦函数的 IQMath。 这用于传感器校准。

    我不熟悉 TI MCU。 MSPM0L1306是一款非常强大的硬件、但在 IQMath 示例中、我找不到如何处理数组函数。  

    在诸如 NXP KEA8系列的其他 MCU 中、它们具有库函数、使该计算非常简单。

    为了使用 您提供的2元素数组示例、需要执行以下步骤:

    首先计算表示执行线性插值的间隔的索引。

    第二个计算插值间隔内的横坐标偏移。

    最后、通过计算间隔开始和结束时从表中读取的序数之间的线性内插来计算内插值。

    请告诉我是否正确、或者是否有更简单的方法 。

    好的

    黄昌河

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Chang He:

    您需要创建自己的函数并传递2个数组(X 数组和 Y 数组)、然后执行线性内插数学运算。  由于 您有32个元素,线性回归也可能起作用(虽然这是更广泛的)。

    有很多关于如何进行线性内插或回归的教程、您可以 使用 IQmath 库来实现数据类型和数学函数(乘法和除法)、以获得浮点数学处理速度的优势。

    此致、

    Luke