最近在试着用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语言卷积或互相关函数写法相关推荐

  1. 一个简易的c语言病毒源码

    /*C语言病毒代码*/ #include <io.h> #include <dir.h> #include <stdio.h> #include <stdli ...

  2. 一个简易的c语言病毒源码,求简单病毒代码

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 #include #include void main(void) { virus(); } int virus() { struct ffblk ffb ...

  3. c语言实现 网络嗅探程序代码,一个简易网络嗅探器的实现源代码.doc

    一个简易网络嗅探器的实现源代码 摘要:本文介绍一个用C语言和网络数据包分析开发工具实现的简易网络Sniffer. 要害词:网络:数据包:Sniffer 引言 目前,已经有不少的Sniff工具软件,如W ...

  4. 十位数连加 c语言,用C语言编写一个简易计算器可实现加减乘除,连加连减,连乖连除....

    用C语言编写一个简易计算器可实现加减乘除,连加连减,连乖连除. 用C语言编写一个简易计算器可实现加减乘除,连加连减,连乖连除. 人气:435 ℃时间:2020-04-10 06:55:13 优质解答 ...

  5. python爬虫捕鱼网站_一个简易的爬虫工具,使用Python语言编写,用于zhihu全自动捕鱼...

    简介 这是什么 这是一个简易的爬虫工具,使用Python语言编写,用于zhihu全自动捕鱼,理论上,你可以爬取你感兴趣的任何问题,而不仅仅是小姐姐. 如何使用 编程使用 请确保你的Python版本是3 ...

  6. C语言-实现一个简易的银行排号叫号系统

    这两天在网上看到这个题目,感觉挺有意思,就做了一下.我在网上看到其他人都是用C++做的,因为不懂C++语言,没看懂,尝试着用C语言做了该题.希望能来看该题的大神指点指点,估计还有些bug没找出来. 本 ...

  7. c语言课程设计报告-计算器的实现,C语言课程设计--一个简易计算器的设计与实现.doc...

    C语言课程设计--一个简易计算器的设计与实现 扬 州 大 学 ------------------1 程序设计内容:------------------1 课程设计所补充的内容:补充的函数或算法--- ...

  8. c语言小游戏 精简_一个简易的贪吃蛇小游戏C语言源码

    /* *程序名称:贪吃蛇v2.1 *程序描述:一个简易的贪吃蛇小游戏 *版本信息:v2.1 *v1.1版本更新:1:加入菜单选择项 *v1.2版本更新:1:修复菜单选择bug *v1.3班本更新:1: ...

  9. 用go语言撸一个简易版的区块链

    用go撸一个简易版的区块链 引言 这个最初的版本时多年以前学习go的时候,自己撸的一个简易版本的区块链.不过麻雀虽小,五脏俱全.通过这个代码你了解区块链内部的大概运行机制时没有问题的. 比特币底层区块 ...

最新文章

  1. 【C++】google gflags详解
  2. ACM 未解决的问题
  3. asp.net中的记忆盲区
  4. 微型计算机中abcd是指,一级笔试模拟试题二(答案)
  5. https://sysdig.com/
  6. 毕设日志5.12凌晨
  7. Java中Int转byte分析
  8. 多控制器之UIWindow
  9. PR 审批界面增加显示项方法
  10. 网络安全基础——破解系统密码
  11. win7误删文件怎么恢复?
  12. Applet 小应用程序查看器 乱码(小方块)
  13. 手码-在U-boot SPL 移植新的PMIC芯片驱动
  14. 系统设计面试题之 怎么设计一个打分系统
  15. 一致性哈希算法 mysql_一致性哈希算法 CARP 原理解析, 附 Golang 实现
  16. 关于网易云音乐的一些感想
  17. 小议移动订货之南北厂商
  18. vivado基本使用流程(六、下载到开发板并且调用ILA抓信号)
  19. Samsung Galaxy S5(G9006V)刷机降级(Android 6.0.1-Android 4.4.2)(MD)
  20. 【FlaskMySQL】Flask连接数据库MySQL(十)

热门文章

  1. vue项目使用rem让页面字体fontsize自适应
  2. 手把手带你实现JAVA自定义异常和全局异常处理
  3. dos echo指令显示“echo处于打开状态”
  4. 基于Qt+海康sdk+MySql的远程录像下载程序
  5. java同学录_JSP同学录(jsp+javabean)
  6. Python xlwt设置excel数字格式
  7. 计算机基础---电脑的原理
  8. 成功座右铭(陈安之)
  9. JAVA 代码覆盖率工具 JaCoCo-踩坑篇
  10. 统计字母A的出现次数