:按线性(本质是等差数组)或对数数组

基本概念

在软件设计中,经常会遇到需要生成算术或比例向量数组的情况。例如,在数字信号处理领域,要求在[x1~x2]之间是线性的(本质上是算术数组)或对数的(本质上是算术数组)。是一个比例数组)分布来生成一个 N 个频率点的数组。针对此类问题,分别提供了两个现成的函数,函数原型描述如下:

1、y = (x1,x2,n),作用是在x1和x2之间生成一个n点行线性向量数组,其中x1、x2、n为起始值分别为,终止值,元素个数。

2、y=(a, b, n),作用是生成n个元素的行向量数组,除以10的a次方到10的b次方的对数。

C/C++ 语言的标准库中目前没有函数实现。下面给出具体的实现思路和代码。

功能的实现

对于根据x1和x2之间的线性分布生成n个点的算术数组函数matlab调用c函数怎么用,实现方法比较简单。思路:第i个点的公式表示为:y[i]=x1+i*d,其中,i的范围是[0~n-1],d是元素之间的间隔:d = (x2-x1)/(n-1)。C/C++语言的具体实现代码如下:

在上面的代码中,将得到的算术向量数组放在指针y对应的数组中。

功能的实现

比例数组函数的实现稍微复杂一些matlab调用c函数怎么用,它产生 n 个点,对数分布在 10 的 a 次方到 10 的 b 次方之间。先求公比q:10的((ba)/n-1)次方的值,则第i个点的公式为:

其中,i的取值范围为[0~n-1]。C/C++语言的具体实现代码如下:

在上面的代码中,将得到的比例向量数组放在指针y对应的数组中。

代码测试示例

调用以上两个函数,测试代码如下:

需要注意的是代码中函数的验证需要0.0001和0001之间的对数分布,所以a和b对应的值为log10(0.0001)@ > 和 log10()。

结果如下:

结论

上面的代码完美的实现了.中对应的两个函数的功能。

对于功能,可以进一步扩展。在上面的代码实现中,使用了以 10 为底的对数分布。当然,也可以生成以任意底为底的对数分布数组。它只需要稍微修改上面的代码就可以实现这一点。函数,代码如下:

例如,以2为底,1到512之间生成的对数分布数组为:[1, 2, 4, 8, 16, 32, 64, 128, 256, 512]。

如果你有更好的实现方法,可以关注留言讨论。

欢迎大家多多关注和交流。

文章来源:http://www.toutiao.com/a6600555252028539399/

------本页内容已结束,喜欢请分享------

感谢您的来访,获取更多精彩文章请收藏本站。

© 版权声明
THE END
喜欢就支持一下吧
点赞12 分享