提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 一、定义插值函数
  • 二、定义函数
    • 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模块实现线性插值算法相关推荐

  1. 欧拉角与四元数互转,及四元数slerp球面线性插值算法

    欧拉角与四元数互转,及四元数slerp球面线性插值算法 1. 欧拉角与四元数是什么? 2. 源码 2.1 欧拉角类 2.2 四元数类 2.3 欧拉角与四元数互转及球面线性插值算法 参考 1. 欧拉角与 ...

  2. 线性插值算法实现图像_C程序实现插值搜索算法

    线性插值算法实现图像 Problem: 问题: We are given an array arr[] with n elements and an element x to be searched ...

  3. 用线性插值算法实现图像缩放

    用线性插值算法实现图像缩放 猛禽[Mental Studio](个人专栏)(BLOG) http://mental.mentsu.com 在Windows中做过图像方面程序的人应该都知道Windows ...

  4. bayer插值算法(3):高质量线性插值算法

    目录 前言 插值算法 高质量插值算法 代码示例 前言 相机生成的图像一般是bayer阵列的raw图,这时候如果转换成我们需要的rgb图像,就需要对应的bayer插值算法将丢失的rgb信息通过算法补齐 ...

  5. ansible常用模块之script模块和cron模块(十)

    1.script模块 语法格式 ansible backup -m script -a "脚本" 直接写脚本路径即可 案例:安装rsync 1.写脚本 [root@ansible ...

  6. matlab实现 分段线性插值算法 piecewise linear interpolation

    我们先看<数值计算方法(丁丽娟)>这本书上关于分段线性插值的例题: 所以基本原理从例题中可以看懂 现在设计matlab脚本如下:输入inputn行2列的矩阵,代表已知的原始点,第一列为X值 ...

  7. Ansible script模块使用示例

  8. ansible模块command、shell、raw、script

    环境: ansible端: ip:192.168.100.129 hostname:node1.lansgg.com client端: ip:192.168.100.131 hostname:v2.l ...

  9. 02 ansible核心模块 之 shell script

    shell模块(万能模块)可以使用特殊符号 < > | 等 command不能 ansible 192.168.0.102 -m shell -a "hostname" ...

  10. android 马达模块,手机马达的二三事 线性马达与转子马达的不同体验

    手机马达的二三事 线性马达与转子马达的不同体验 2019-01-18 20:16:00 18点赞 19收藏 18评论 每一款智能手机都内置震动马达,来给我们模拟震动反馈,给我们一种比声音更直接的触感体 ...

最新文章

  1. SQL Server2008及以上 表分区操作详解
  2. 【IEEE】2020 年AI's 10 To Watch名单新鲜出炉!MIT韩松、方飞、张含望等华人入选!...
  3. 英特尔10nm至强CPU发布,对标AMD“米兰”EPYC,然而结果尴尬了
  4. 【数据竞赛】组合特征的构建技巧,如何快速构建百大组合特征池
  5. python格式化输出 xz_Python——详解__str__, __repr__和__format__
  6. 小程序 bindtouchmove 使用拖动按钮 页面跟着滑动并拖动卡顿感 问题
  7. 关于大数据平台,这有一套完整的方法论,你确定不收藏?
  8. 明白了一个重要的道理
  9. 攻防世界-music-高手进阶区-miscmisc
  10. 添加打印机无法搜索计算机,电脑无法搜索添加局域网打印机怎么办
  11. python死循环_Python for死循环
  12. java list筛选数据_java 根据条件在List中筛选出符合条件的对象
  13. 微信小程序开发:向数组中插入数据
  14. 深入理解Flash Player的安全域(Security Domains)
  15. 5个步骤做好会议复盘工作
  16. 远程驾驶一般怎么实现
  17. BZOJ2876: [Noi2012]骑行川藏
  18. 在网站上更改鼠标样式
  19. 携职教育:广东2022年企业人力资源管理师职业技能等级认定计划
  20. matlab入门文档

热门文章

  1. keras中文版官方文档
  2. vue 生成PDF(A4标准PDF分页)
  3. vs2015 vc14编译libcurl
  4. 【模拟电路】PID简介
  5. SAS基础-日期时间本质
  6. SaaSpace:10种最佳免费密码管理器软件
  7. kuangbin新模板错误
  8. endnotex7怎么导入中文文献_EndNote导入CNKI文献的方法 | 科研动力
  9. python 抽签程序_抽签程序源码
  10. 修改tomcat日志打印位置