关于MATLAB中conv()卷积结果的长度的探讨
2016-01-29 14:11
555 查看
转自:http://wenku.baidu.com/link?url=_XsCGpmz9URT55q82Ka0Amgu2svvG8VyuTq71BvzTQmNIzqj_5DIanp8NkI6duePNyuxltuTWcJcnFi1MWseTXxgJuysud0CawPHrjGCh77
关于MATLAB中conv()卷积结果的长度的探讨
1. 问题的提出
众所周知,已知信号长度为M的时间序列{x(i), i=1,M}与长度为N的近似理想脉冲响
应滤波器{h(i),i=1,N}的卷积长度为M+N-1的序列{y(i),i=1,M+N-1}。实际上只有中间的M-N+1的长度是有效卷积的内容。而两端各有N/2的长度,是部分{h(i)}和{x(i)}乘积求和的结
果,是两个脉冲函数,这两端的部分不是我们想要的。
在实际应用中,我们希望得到的{y(i)},不仅能够在长度上与{x(i)}一致,而且在内容
上也全部是有效的。MATLAB中conv(x,h,flag)的函数flag有三个选项“full”,”same”和
“valid”。在默认情况下是“full”全部长度即M+N-1,完整的调用格式为conv(x,h,’full’)。
‘valid’选项的长度只M-N+1, 其内容就是’same’和‘full’的中间M-N+1的部分。而‘same’中
的前首尾两端各N/2不是我们想要的,’full’首尾两端各N的长度也不是我样想要的。
2. 解决方法
(1) 周期延拓
将原始的{x(i)}中尾部N/2长度的数据接在其前面,并且将原始{x(i)}中头部的数据
接在其后面,即完成了周期延拓。再使用conv(x,h,’valid’)就可以得到与原始{x(i)}在长度上
相同,重要的是有效的卷积序列。
(2) 多天数据首尾相接法
如果{x(i)}是一天的长度,那么可将前天的数据末尾N/2长度的数据接在当天{x(i)}的前
面,将下一天的数据的头部N/2长度的数据接在当天{x(i)}的尾部。再进行conv(x,h,’valid’)
就可以得到与原始{x(i)}在长度上相同,重要的是有效的卷积序列。
方法(1)与(2)的差别在于有效部分形开始的少量结果有一致,到中间有效部分的
长度就是完全一样的了。
关于MATLAB中conv()卷积结果的长度的探讨
1. 问题的提出
众所周知,已知信号长度为M的时间序列{x(i), i=1,M}与长度为N的近似理想脉冲响
应滤波器{h(i),i=1,N}的卷积长度为M+N-1的序列{y(i),i=1,M+N-1}。实际上只有中间的M-N+1的长度是有效卷积的内容。而两端各有N/2的长度,是部分{h(i)}和{x(i)}乘积求和的结
果,是两个脉冲函数,这两端的部分不是我们想要的。
在实际应用中,我们希望得到的{y(i)},不仅能够在长度上与{x(i)}一致,而且在内容
上也全部是有效的。MATLAB中conv(x,h,flag)的函数flag有三个选项“full”,”same”和
“valid”。在默认情况下是“full”全部长度即M+N-1,完整的调用格式为conv(x,h,’full’)。
‘valid’选项的长度只M-N+1, 其内容就是’same’和‘full’的中间M-N+1的部分。而‘same’中
的前首尾两端各N/2不是我们想要的,’full’首尾两端各N的长度也不是我样想要的。
2. 解决方法
(1) 周期延拓
将原始的{x(i)}中尾部N/2长度的数据接在其前面,并且将原始{x(i)}中头部的数据
接在其后面,即完成了周期延拓。再使用conv(x,h,’valid’)就可以得到与原始{x(i)}在长度上
相同,重要的是有效的卷积序列。
(2) 多天数据首尾相接法
如果{x(i)}是一天的长度,那么可将前天的数据末尾N/2长度的数据接在当天{x(i)}的前
面,将下一天的数据的头部N/2长度的数据接在当天{x(i)}的尾部。再进行conv(x,h,’valid’)
就可以得到与原始{x(i)}在长度上相同,重要的是有效的卷积序列。
方法(1)与(2)的差别在于有效部分形开始的少量结果有一致,到中间有效部分的
长度就是完全一样的了。
相关文章推荐
- Poisson image editing算法实现的Matlab代码解析
- Matlab---串口操作---数据採集篇
- win10 下运行 matlab7.0 出错的问题解决办法
- matlab-code folding功能 将某些行的代码折叠起来方便查看
- Matlab启动时自动运行某个脚本 (即某个.m文件)
- Matlab引用第三方包
- matlab(Simulink)中S-function函数编写规则
- 关于matlab GUI 的一些总结
- [MATLAB] Matlab hints for Machine Learning by Anderw Ng
- matlab使用lsqcurvefit函数出现 lsqcurvefit at 253 Function value and YDATA sizes are incommensurate.
- Matlab实现博弈论赌博仿真
- matlab---SPAMS稀疏建模工具箱
- matlab修改打开时的默认路径的最简单使用的方法
- Matlab的一些零碎方法
- Matlab判断正态分布性检验
- matlab-size函数、img函数的经典问题以及:冒号的使用
- matlab字符串的常用操作
- matlab 自动创建文件夹
- Matlab问题汇总
- 二次规划问题和MATLAB函数quadprog的使用