matlab卷积和互相关,互相关与卷积_weixin_28756427的博客-程序员宅基地

技术标签: matlab卷积和互相关  

互相关

设两个函数分别是f(t)和g(t),则互相关函数定义为:

a4c26d1e5885305701be709a3d33442f.png

它反映的是两个函数在不同的相对位置上互相匹配的程度。

线性卷积

在泛函分析中,是通过两个函数f和g生成第三个函数的一种数学算子,表征函数f与经过翻转和平移的g的重叠部分的累积。如果将参加卷积的一个函数看作区间的指示函数,卷积还可以被看作是"移动平均"的推广。

a4c26d1e5885305701be709a3d33442f.png

理解卷积的物理含义也许有点难,但是理解其计算却是相对容易,东南大学的数字信号课程里做了一个线性卷积的动画演示:http://zlgc.seu.edu.cn/jpkc2/ipkc/signal/new/course/one/flash/juanji_swf.htm

因此,我们很容易理解,卷积和相关是相似的,两者就是多了一个旋转过程而已,卷积要先对Y轴旋转!

用卷积来表示相关就是:

a4c26d1e5885305701be709a3d33442f.png

通常来说,计算卷积都是在频域进行的,这主要是利用了FFT变换的卷积定理

a4c26d1e5885305701be709a3d33442f.png

快速傅里叶转换(FFT)计算卷积,在时域(time

domain)做卷积相当于这两个信号的离散傅里叶转换在频域(frequency domain)做相乘。

因此,matlabz中计算相关和卷积都是在频域计算的,再转回时域,这可以简单用代码来验证一下:

Matlab计算互相关函数xcorr,计算卷积函数conv;

C =

xcorr(x,y,'option'),如果x,y长度不同,matlab会自动给短向量后面补零,最终长度length=2*max(n,m)-1;

"biased"为有偏的互相关函数估计;

"unbiased"为无偏的互相关函数估计;

"coeff"为0延时的正规化序列的自相关计算;

"none"为原始的互相关计算,也是默认模式;

Z=

conv(x,y,'shape'),两向量长度不需要一致,最后卷积长度length=n+m-1;

"full"为默认模式,返回全部卷积(n+m-1);

"same",返回中间部分卷积,长度与x相同(n);

"valid",返回中间没有用零填充部分的卷积值,用滑动窗的方法解释的话,就是第2个窗口能够完全被第一个窗口重合、包含的部分(max(n-max(0,m-1),0),因此如果n

% 卷积法计算互相关的验证程序

dt=0.1;

t=[0:dt:100];

x=5*sin(4*t);

y=3*cos(3*t);

[a,b]=xcorr(x,y);

plot(b*dt,a);

yy=3*cos(3*fliplr(t)); % 以Y为轴对称翻转 yy=fliplr(y);

c=conv(x,yy);

err = a-c;

subplot(3,1,1);

plot(b*dt,a,'k');

title('Corr','fontsize',16);xlabel('Logs','fontsize',12);

subplot(3,1,2);

plot(b*dt,c,'r');

title('Conv','fontsize',16);xlabel('Logs','fontsize',12);

subplot(3,1,3);

plot(b*dt,err,'g');

title('Error','fontsize',16);xlabel('Logs','fontsize',12);

% 这里误差小于1e-13,本人认为是由matlab的数值误差所引起,可以忽略。

a4c26d1e5885305701be709a3d33442f.png

a4c26d1e5885305701be709a3d33442f.png

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_28756427/article/details/115845225

智能推荐

C#泛型集合揽胜_weixin_30252155的博客-程序员宅基地

集合是OOP中的一个重要概念,C#中对集合的全面支持更是该语言的精华之一。 为什么要用泛型集合? 在C# 2.0之前,主要可以通过两种方式实现集合:a.使用ArrayList 直接将对象放入ArrayList,操作直观,但由于集合中的项是Object类型,因此每次使用都必须进行繁琐的类型转换。 b.使用自定义集合类 比较常见的做...

ssm访问swagger报错500__杀生丸_的博客-程序员宅基地

如图原因:swagger与死spring版本不匹配。在pom文件中降低swagger版本,或升高spring版本。这里降低swagger版本为2.5。0成功

notepad++ xml插件使用demo_健忘主义的博客-程序员宅基地_notepad++ xml插件

// _ooOoo_ // o8888888o // 88" . "88 // (| -_- |) // O\ = /O // ____/`---'\____ // .

LeetCode:用两个栈模拟队列_一只_小青蛙的博客-程序员宅基地_用两个栈模拟队列

题目描述:用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操作返回 -1 )示例 1:输入:[“CQueue”,“appendTail”,“deleteHead”,“deleteHead”][[],[3],[],[]]输出:[nul...

Oracle性能优化 之 库缓存命中率及等待事件_weixin_33690367的博客-程序员宅基地

3.库缓存的大小 我们上面从程序员的角度上讲述了如何共享执行计划。下面再来看看作为DBA可以为共享执行计划做什么事。首先我们要知道,每条语句的执行计划是保存在库缓存中的,优化器在解析语句时,先要到库缓存中,以语句的文本为条件,查找有没有此语句的执行计划,如果已经有了,就直接取出来交给服务器进程执行,这就是软解析。如果库缓存中不存在相同的语句,优化器就为此语句生成执行计...

java 更新jlabel_java - 用Java更新绑定的JLabel文本 - 堆栈内存溢出_weixin_39588911的博客-程序员宅基地

当我运行您发布的代码时,我收到了NullPointerException 。 这是堆栈跟踪的一部分。 (请注意,我的环境是[64位] Windows 10上的JDK 13.0.1。)Exception in thread "AWT-EventQueue-0" java.awt.IllegalComponentStateException: contentPane cannot be set t...

随便推点

[OI模拟赛]2017.8.19 Day1_weixin_30518397的博客-程序员宅基地

T1 小Z的情书题目链接思考:题目主要难度在于旋转后的位置如何,在手写了样例之后不难发现规律。#include <cstdio>#include <cstring>#define up(a,b,c) for(register int c=a;c<=b;++c)#define down(a,b,c) for(register...

设计模式(8)之七大原则之七大原则总结_技术路上的苦行僧的博客-程序员宅基地

一、总结结合前几节的内容,我们一共介绍了 7 种设计原则,它们分别为开闭原则、里氏替换原则、依赖倒置原则、单一职责原则、接口隔离原则、迪米特法则和合成复用原则。这 7 种设计原则是软件设计模式必须尽量遵循的原则,是设计模式的基础。在实际开发过程中,并不是一定要求所有代码都遵循设计原则,而是要综合考虑人力、时间、成本、质量,不刻意追求完美,要在适当的场景遵循设计原则。这体现的是一种平衡取舍,可以帮助我们设计出更加优雅的代码结构。各种原则要求的侧重点不...

极限编程中的简单设计,其实不简单_禅道程序猿的博客-程序员宅基地_极限编程简单设计

简单设计是说只编写必要的代码,用最简洁的代码来实现当前的需求,来让程序结构保持最简单、最小、最富表现力。“保持简单、保持笨拙”,这也是著名的KISS(keep it simple, stupid)原则。 极限编程中的简单设计,其实不简单 很多软件设计很 好地践行了这一原则,例如知名的Unix。Unix 哲学中的很多原则也都体现了简单设计:1.清晰原则:代码要清晰,避免晦涩难懂,清晰的代

17.bind、call、apply 区别?如何实现一个bind?_kleinBlue.的博客-程序员宅基地

一、作用call、apply、bind作用是改变函数执行时的上下文,简而言之就是改变函数运行时的this指向那么什么情况下需要改变this的指向呢?下面举个例子varname="lucy";constobj={name:"martin",say:function(){console.log(this.name);}};obj.say();//martin,this指向obj对象setTimeout(obj.say,0);/...

全景效果图html5,HTML5+JS实现可交互360°&柱状全景图浏览_weixin_39823269的博客-程序员宅基地

以前写文章总喜欢把自己折腾的过程和思路都写出来不知道为什么 懒,现在都喜欢直接上干货了,大概是为了节约大家的时间吧看标题是不是以为我要手动canvas秒天秒地?别瞎想了就我这样的菜逼只有调库的份直接上我好不容易找到的一个挺好用的库,Photo Sphere Viewer.js使用非常简单,官方示例:var viewer = PhotoSphereViewer({container: 'contai...

Oracle 11g网格控制器安装指南_weixin_33895657的博客-程序员宅基地

  先前对oracle 10g的网格控制器有着十分痛苦的使用经历,总是问题百出!先是安装需要打补丁,未升级前硬盘灯总是狂闪,然后CPU的I/O等待严重!  升级到10g的最高版本且在agent端安装好yast后,网格控制器的administration选项卡上只出现“系统服务”和“网络”两项!具体情况查看以下链接:http://www.itpub.net/thread-1497851-1-1....

推荐文章

热门文章

相关标签