一个简易的c语言卷积或互相关函数写法
最近在试着用stm32做一个基于tdoa的声源定位项目,在最初的互相关函数这卡了一会,网上也没找到有用 的资料,就自己写了一个。
实际上实序列的卷积与互相关都差不多,卷积是两个序列的移位叠加,互相关则是翻转了其中一个序列的卷积。
#互相关 已用matlab验证
#include<stdio.h>
float p1[5]={1,2,3,4,5};
float p2[5]={1,2,3,4,5};main()
{ int i,j;int size=5; //待卷积序列的长度,这里默认了两个序列一样长,如果不一样长可以加一个size//然后替换下面双循环的结束条件float x[10]={0,0,0,0,0,0,0,0,0,0};for(j=0;j<size;j++){for(i=0;i<size;i++){x[i+j]+=(p1[j])*(p2[size-1-i]);printf("x[%d]=%f \n",i+j,x[i+j]);}printf("\n");}for(i=0;i<10;i++){printf("%f ",x[i]);}}
#卷积 已用matlab验证
#include<stdio.h>
float p1[5]={1,2,3,4,5};
float p2[5]={1,2,3,4,5};main()
{ int i,j;int size=5;float x[10]={0,0,0,0,0,0,0,0,0,0};for(j=0;j<size;j++){for(i=0;i<size;i++){x[i+j]+=(p1[j])*(p2[i]); //与互相关的差别在这printf("x[%d]=%f \n",i+j,x[i+j]);}printf("\n");}for(i=0;i<10;i++){printf("%f ",x[i]);}}
//这个是用在32里的,对三个序列求互相关,结果保存在全局变量中//互相关数据
float xcorr_data_0and0[SendBuff/3*2]={0};
float xcorr_data_0and1[SendBuff/3*2]={0};
float xcorr_data_0and2[SendBuff/3*2]={0};//平均值
float32_t mean0=1.6;
float32_t mean1=1.6;
float32_t mean2=1.6;void xcorr(float *data0,float *data1,float *data2,uint16_t size)
{int i,j;//清零数组memset(xcorr_data_0and0,'\0',sizeof(xcorr_data_0and0));memset(xcorr_data_0and1,'\0',sizeof(xcorr_data_0and1));memset(xcorr_data_0and2,'\0',sizeof(xcorr_data_0and2));//求平均值arm_mean_f32( (float32_t *)data0,SendBuff/3,&mean0 ); arm_mean_f32( (float32_t *)data1,SendBuff/3,&mean1 ); arm_mean_f32( (float32_t *)data2,SendBuff/3,&mean2 ); //互相关代码for(j=0;j<size;j++){for(i=0;i<size;i++){xcorr_data_0and0[i+j]+=(data0[j])*(data0[size-1-i]);xcorr_data_0and1[i+j]+=(data0[j])*(data1[size-1-i]);xcorr_data_0and2[i+j]+=(data0[j])*(data2[size-1-i]); }}}
一个简易的c语言卷积或互相关函数写法相关推荐
- 一个简易的c语言病毒源码
/*C语言病毒代码*/ #include <io.h> #include <dir.h> #include <stdio.h> #include <stdli ...
- 一个简易的c语言病毒源码,求简单病毒代码
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 #include #include void main(void) { virus(); } int virus() { struct ffblk ffb ...
- c语言实现 网络嗅探程序代码,一个简易网络嗅探器的实现源代码.doc
一个简易网络嗅探器的实现源代码 摘要:本文介绍一个用C语言和网络数据包分析开发工具实现的简易网络Sniffer. 要害词:网络:数据包:Sniffer 引言 目前,已经有不少的Sniff工具软件,如W ...
- 十位数连加 c语言,用C语言编写一个简易计算器可实现加减乘除,连加连减,连乖连除....
用C语言编写一个简易计算器可实现加减乘除,连加连减,连乖连除. 用C语言编写一个简易计算器可实现加减乘除,连加连减,连乖连除. 人气:435 ℃时间:2020-04-10 06:55:13 优质解答 ...
- python爬虫捕鱼网站_一个简易的爬虫工具,使用Python语言编写,用于zhihu全自动捕鱼...
简介 这是什么 这是一个简易的爬虫工具,使用Python语言编写,用于zhihu全自动捕鱼,理论上,你可以爬取你感兴趣的任何问题,而不仅仅是小姐姐. 如何使用 编程使用 请确保你的Python版本是3 ...
- C语言-实现一个简易的银行排号叫号系统
这两天在网上看到这个题目,感觉挺有意思,就做了一下.我在网上看到其他人都是用C++做的,因为不懂C++语言,没看懂,尝试着用C语言做了该题.希望能来看该题的大神指点指点,估计还有些bug没找出来. 本 ...
- c语言课程设计报告-计算器的实现,C语言课程设计--一个简易计算器的设计与实现.doc...
C语言课程设计--一个简易计算器的设计与实现 扬 州 大 学 ------------------1 程序设计内容:------------------1 课程设计所补充的内容:补充的函数或算法--- ...
- c语言小游戏 精简_一个简易的贪吃蛇小游戏C语言源码
/* *程序名称:贪吃蛇v2.1 *程序描述:一个简易的贪吃蛇小游戏 *版本信息:v2.1 *v1.1版本更新:1:加入菜单选择项 *v1.2版本更新:1:修复菜单选择bug *v1.3班本更新:1: ...
- 用go语言撸一个简易版的区块链
用go撸一个简易版的区块链 引言 这个最初的版本时多年以前学习go的时候,自己撸的一个简易版本的区块链.不过麻雀虽小,五脏俱全.通过这个代码你了解区块链内部的大概运行机制时没有问题的. 比特币底层区块 ...
最新文章
- 【C++】google gflags详解
- ACM 未解决的问题
- asp.net中的记忆盲区
- 微型计算机中abcd是指,一级笔试模拟试题二(答案)
- https://sysdig.com/
- 毕设日志5.12凌晨
- Java中Int转byte分析
- 多控制器之UIWindow
- PR 审批界面增加显示项方法
- 网络安全基础——破解系统密码
- win7误删文件怎么恢复?
- Applet 小应用程序查看器 乱码(小方块)
- 手码-在U-boot SPL 移植新的PMIC芯片驱动
- 系统设计面试题之 怎么设计一个打分系统
- 一致性哈希算法 mysql_一致性哈希算法 CARP 原理解析, 附 Golang 实现
- 关于网易云音乐的一些感想
- 小议移动订货之南北厂商
- vivado基本使用流程(六、下载到开发板并且调用ILA抓信号)
- Samsung Galaxy S5(G9006V)刷机降级(Android 6.0.1-Android 4.4.2)(MD)
- 【FlaskMySQL】Flask连接数据库MySQL(十)