日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

plecs使用C-Script模块实现线性插值算法

發布時間:2023/12/31 编程问答 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 plecs使用C-Script模块实现线性插值算法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

提示:文章寫完后,目錄可以自動生成,如何生成可參考右邊的幫助文檔

文章目錄

  • 一、定義插值函數
  • 二、定義函數
    • 1.getIndex
    • 2.定義宏命令
    • 3.指針的獲取
  • 三、返回
  • 總結


一、定義插值函數

在plecs打開C-Script代碼編寫模塊

double lininterp(double *x, double *y, int vectorLength, double xValue)

*x橫坐標向量,c語言中沒有現成的向量,故用指針來實現。

*y縱坐標向量。

又因為c語言里傳遞指針時無法傳遞指針的長度,所以還需要傳輸點的個數的數量vectorLength。

最后還需要插值的橫坐標xValue。所以就是根據橫縱坐標向量和向量長度,得到想要差值橫坐標的縱坐標。

double lininterp(double *x, double *y, int vectorLength, double xValue) {int index = getIndex(x, vectorLength, xValue);if(index == vectorLength - 1)return LINEAR_INTERPOLATION(x[index-1], y[index-1], x[index], y[index], xValue);elsereturn LINEAR_INTERPOLATION(x[index], y[index], x[index+1], y[index+1], xValue); }

getIndex這個函數的功能是求出xValue在那兩個差值之間,并返回左邊那個點的索引值,賦給了index這個變量

除了遇到最右的區塊,返回最右邊的索引:index == vectorLength - 1。用最右的點與倒數第二個點進行差值。否則會溢出

宏命令LINEAR_INTERPOLATION實現知道X1,X2,Y1,Y2和X,返回Y

二、定義函數

1.getIndex

代碼如下(示例):

int getIndex(double *x, int vectorLength, double xValue) {int minIndex = 0;int maxIndex = vectorLength - 1;int middleIndex;if(xValue < x[minIndex])return minIndex;else if(xValue > x[maxIndex])return maxIndex;while(1){if(maxIndex - minIndex <= 1)return minIndex;middleIndex = (minIndex + maxIndex)/2;if(x[middleIndex] > xValue)maxIndex = middleIndex;elseminIndex = middleIndex;} }

2.定義宏命令

代碼如下(示例):

#define LINEAR_INTERPOLATION(X1, Y1, X2, Y2, X) ( (Y2-Y1)/(X2-X1)*(X-X1) + Y1 )#define VECTOR_LENGTH ( ParamDim(0, 0)*ParamDim(0, 1) )

分別定義插值和向量長度。向量長度是行數與列數的乘積

3.指針的獲取

setup處

code declaration部分,獲取

code中start function code部分,分配內存,并賦值

在仿真結束時釋放內存,在terminate function code

三、返回

調用lininterp函數

Output(0) = lininterp(x, y, VECTOR_LENGTH, fmod(CurrentTime, x[VECTOR_LENGTH - 1]));

總結

提示:這里對文章進行總結:
例如:以上就是今天要講的內容,本文僅僅簡單介紹了pandas的使用,而pandas提供了大量能使我們快速便捷地處理數據的函數和方法。

總結

以上是生活随笔為你收集整理的plecs使用C-Script模块实现线性插值算法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。