首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么我不能使卷积在MATLAB中正常工作?

为什么我不能使卷积在MATLAB中正常工作?
EN

Stack Overflow用户
提问于 2014-10-23 01:59:01
回答 1查看 2.2K关注 0票数 3

每次在MATLAB中转换信号都会产生意想不到的结果。以下面的代码为例,在代码中,我尝试将一个rect函数与其自身相转换:

代码语言:javascript
运行
复制
clc

clear all

x=-5:.01:5;

y=rectangularPulse(x);

C=conv(y,y);

plot(C)

产生三角形函数是正确的,但是它的中心应该是0,而不是1000,振幅应该是1,而不是100。我确信这只是对MATLAB中conv()函数如何工作的一个简单的误解;如果有一种方法可以产生一个三角形函数,从-1到1,振幅为1,请告诉我如何做。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-10-23 02:33:49

这里混乱的部分原因是,您正在处理的信号y0.01x中的样本是离散的。此外,CONV似乎对多项式乘法具有双重作用.在帮助文档中:

如果u和v是多项式系数的向量,则它们的卷积等价于将这两个多项式相乘。

卷积包括计算交叉曲线下的面积,当你在另一条曲线上滑动时。CONV通过简单地乘以重叠样本点并假定样本之间的距离为1(即矩形条的宽度近似于曲线下的面积)来实现这一离散版本。为了得到一个真正的卷积,你必须用0.01的样本间距来缩放得到的近似面积。此外,您还需要使用'same'参数提取卷积的中心部分,这样您就可以绘制结果与x之间的关系,如下所示:

代码语言:javascript
运行
复制
C = 0.01.*conv(y, y, 'same');
plot(x, C);

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26520123

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档