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模块实现线性插值算法相关推荐
- 欧拉角与四元数互转,及四元数slerp球面线性插值算法
欧拉角与四元数互转,及四元数slerp球面线性插值算法 1. 欧拉角与四元数是什么? 2. 源码 2.1 欧拉角类 2.2 四元数类 2.3 欧拉角与四元数互转及球面线性插值算法 参考 1. 欧拉角与 ...
- 线性插值算法实现图像_C程序实现插值搜索算法
线性插值算法实现图像 Problem: 问题: We are given an array arr[] with n elements and an element x to be searched ...
- 用线性插值算法实现图像缩放
用线性插值算法实现图像缩放 猛禽[Mental Studio](个人专栏)(BLOG) http://mental.mentsu.com 在Windows中做过图像方面程序的人应该都知道Windows ...
- bayer插值算法(3):高质量线性插值算法
目录 前言 插值算法 高质量插值算法 代码示例 前言 相机生成的图像一般是bayer阵列的raw图,这时候如果转换成我们需要的rgb图像,就需要对应的bayer插值算法将丢失的rgb信息通过算法补齐 ...
- ansible常用模块之script模块和cron模块(十)
1.script模块 语法格式 ansible backup -m script -a "脚本" 直接写脚本路径即可 案例:安装rsync 1.写脚本 [root@ansible ...
- matlab实现 分段线性插值算法 piecewise linear interpolation
我们先看<数值计算方法(丁丽娟)>这本书上关于分段线性插值的例题: 所以基本原理从例题中可以看懂 现在设计matlab脚本如下:输入inputn行2列的矩阵,代表已知的原始点,第一列为X值 ...
- Ansible script模块使用示例
- ansible模块command、shell、raw、script
环境: ansible端: ip:192.168.100.129 hostname:node1.lansgg.com client端: ip:192.168.100.131 hostname:v2.l ...
- 02 ansible核心模块 之 shell script
shell模块(万能模块)可以使用特殊符号 < > | 等 command不能 ansible 192.168.0.102 -m shell -a "hostname" ...
- android 马达模块,手机马达的二三事 线性马达与转子马达的不同体验
手机马达的二三事 线性马达与转子马达的不同体验 2019-01-18 20:16:00 18点赞 19收藏 18评论 每一款智能手机都内置震动马达,来给我们模拟震动反馈,给我们一种比声音更直接的触感体 ...
最新文章
- SQL Server2008及以上 表分区操作详解
- 【IEEE】2020 年AI's 10 To Watch名单新鲜出炉!MIT韩松、方飞、张含望等华人入选!...
- 英特尔10nm至强CPU发布,对标AMD“米兰”EPYC,然而结果尴尬了
- 【数据竞赛】组合特征的构建技巧,如何快速构建百大组合特征池
- python格式化输出 xz_Python——详解__str__, __repr__和__format__
- 小程序 bindtouchmove 使用拖动按钮 页面跟着滑动并拖动卡顿感 问题
- 关于大数据平台,这有一套完整的方法论,你确定不收藏?
- 明白了一个重要的道理
- 攻防世界-music-高手进阶区-miscmisc
- 添加打印机无法搜索计算机,电脑无法搜索添加局域网打印机怎么办
- python死循环_Python for死循环
- java list筛选数据_java 根据条件在List中筛选出符合条件的对象
- 微信小程序开发:向数组中插入数据
- 深入理解Flash Player的安全域(Security Domains)
- 5个步骤做好会议复盘工作
- 远程驾驶一般怎么实现
- BZOJ2876: [Noi2012]骑行川藏
- 在网站上更改鼠标样式
- 携职教育:广东2022年企业人力资源管理师职业技能等级认定计划
- matlab入门文档