当前位置:首页 » 编程语言 » 卷积c语言

卷积c语言

发布时间: 2024-10-28 13:34:50

‘壹’ 在设计FIR数字低通滤波器器时,用MATLAB生成了c语言头文件,在编写单片机程序时该怎样利用那个头文件

再将matlab里边的卷积函数转成C,直接调用就行了~~~~

或者你直接用C语言使用for写个卷积函数,将B和信号做卷积。

real64_T是double,写函数的时候注意点~

‘贰’ 用C语言做离散卷积运算

暴力N ^ 2可以直接乘,直接双重循环即可,要快的话可以用NlogN的FFT。

‘叁’ 为什么《数字信号处理c语言程序集》这本书里的主

数字信号处理C语言程序集,包括数字信号的产生、快速傅立叶变换、快速离散正交变换、快速卷积与相关、数字滤波器的时域和频域响应、IIR数字滤波器的设计、FIR数字滤波器的设计、经典谱估计、现代谱估计、时—频分析、 随机信号的数字滤波、数字图像处理、人工神经网络的C语言实现。

‘肆’ 如何用C语言实现数组的卷积过程~~~

积分为线性卷积,和圆形卷积。而题目是线性卷积,然后是所求的结果个数是上面两个数组 个数的和减去1
比如上面h数组里面单元是5 而x数组 是4
所以肯定一点是结果是等于8个数的
result[(sizeof(h) + sizeof(x)) / sizeof(double) - 1];这个就可以说明了
第二个知识点是卷积是怎么求的。第一步肯定是判断两个数组 那个长度长
conv(x, h, sizeof(x) / sizeof(x[0]), sizeof(h) / sizeof(h[0]), result); 就是实现这个目标的。蔽誉
然后是长度长的放前面
好吧 我换个 数字来就把
x【】=
h【】=
然后卷积 一个是 x0*h0=1;实现语句 是第一个
for (int i = 0; i < lenH; i++)
{
for (int j = 0; j <= i; j++)
result[i] += x[j] * h[i - j];
}
此时 已经要转入第二步骤了:
for (int m = lenH; m < lenX; m++){
for (int j = 0; j <lenH; j++)
result[m] += x[m - j] * h[j];
}
第二部 应该是 x*h+x1*h(1-1)= 这里得h1 用0代替 但程序里 不是这样 而是 用x*h=
好吧 我可能设置的h数组不够长 加入 h有两个。x有笑灶
那么 结果宏升段 应该是x2*y1+x1*y0;
然后是第三部
是说 在要求的 结果 最后几个数字时候 比如原题里面 应该是有8个的。但到第二个循环才求到X得长度5个。
所以 后面应该是resual记住 数组下标 比实际小1. 所以
是这样的
用 for (int n = lenX; n < lenX + lenH - 1; n++){
for (int j = i - lenX + 1; j < lenH; j++)
result[n] += x[n - j] * h[j];
}里面的i 要改成n
for (int n = lenX; n < lenX + lenH - 1; n++){
for (int j = n - lenX + 1; j < lenH; j++)
result[n] += x[n - j] * h[j];
}
然后 是这样分析的
结果等于=x(0)h(5-0)+x(1)h(5-1)+x(2)h(5-2)+x(3)h(5-3)=x(0)h(5)+x(1)h(4)+x(2)h(3)+x(3)h(2) 记住 数组不够的地方 用0代替
(result, &result[8], ostream_iterator<double>(cout, " ")); 这个函数 就不想说了 自己去看stl 算法
另外,虚机团上产品团购,超级便宜

‘伍’ 怎么把小波变换分成低频和高频部分,单独进行处理,高人指教,在线等,所有积分送上。。。

没具体做过,不过按照你的意图,应该就是使用mallat算法的离散小波变换(DWT),在matlab中有现成的函数很易实现。
如果你非要用C,那么需要C下解决以下几点:
1.信号处理中卷积的C程序实现;

2.当实现了卷积计算的C代码,你需要得到某个小波函数对应的高频(带通)和低通分解和重构滤波器组,这可以在matlab的wfilters函数和帮助中得到详细的滤波器系数;

3.以上两个问题都解决了,那么直接对信号用滤波器进行卷积再去掉结果越一半的数据即可得到DWT的高频细节和低频逼近系数,用这些系数补零插值再卷积一次就得到了高频细节和低频逼近的重构信号(这就是你要的高频和低频的两个单独部分,然后你想咋处理就咋处理)。对于多层的DWT你只要对小波系数逐层减半即可实现DWT每层尺度伸长一倍的效果。

4.这时你会碰到卷积滤波的边缘效应,你需要对原始信号进行扩展,你可以参看matlab中dwtmode函数的帮助文档;

5.对于二维DWT,你还要实现张量积C代码的实现,还有二维离散采样(行抽取,列抽取和斜抽取)的C代码(在dwt2函数的帮助文档中有详细的流程图)。

由于matlab函数通常是用C语言编制的,而且每个函数都可查询原始代码,如果你有一定的水平,可以试试。不过你这问题需要较为深入的小波分析,信号处理和数学理论的支持,能不能编出象样的C程序就不知道。这问题matlab很容易就解决了,可非要用C,这就是一个比较大的工程了,一个人要花费好长时间还不一定编的成,光数学理论就伤不起啊,技术问题就更别提了!到现在为止也没见有啥象样的小波C程序,你搜搜试试吧。能想到的就这么多了,水平有限,仅供参考,Good luck!

‘陆’ 关于小波db2和db4在c语言中的实现

小波db2和db4在c语言程序中具体差别体现在阶数不同,也就是存储单元占用量不同,同时信号的延时不同,延时单元的长度也不同

热点内容
安卓手机如何注册苹果邮箱 发布:2024-10-28 15:55:09 浏览:69
易语言红警源码 发布:2024-10-28 15:54:06 浏览:86
威纶禁止反编译项目解密 发布:2024-10-28 15:46:43 浏览:655
如何测试服务器是否已满 发布:2024-10-28 15:43:06 浏览:555
php调用api接口实例 发布:2024-10-28 15:42:31 浏览:709
编译程序之间有何关系 发布:2024-10-28 15:35:45 浏览:751
解压烧烤店 发布:2024-10-28 15:16:30 浏览:431
贷款交完了车子没去解压有问题吗 发布:2024-10-28 15:14:30 浏览:477
配置母液为什么要按顺序加入药品 发布:2024-10-28 15:03:26 浏览:688
云服务器安装ros 发布:2024-10-28 15:01:09 浏览:546