每次在MATLAB中转换信号都会产生意想不到的结果。以下面的代码为例,在代码中,我尝试将一个rect函数与其自身相转换:
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,请告诉我如何做。
发布于 2014-10-23 02:33:49
这里混乱的部分原因是,您正在处理的信号y与0.01在x中的样本是离散的。此外,CONV似乎对多项式乘法具有双重作用.在帮助文档中:
如果u和v是多项式系数的向量,则它们的卷积等价于将这两个多项式相乘。
卷积包括计算交叉曲线下的面积,当你在另一条曲线上滑动时。CONV通过简单地乘以重叠样本点并假定样本之间的距离为1(即矩形条的宽度近似于曲线下的面积)来实现这一离散版本。为了得到一个真正的卷积,你必须用0.01的样本间距来缩放得到的近似面积。此外,您还需要使用'same'参数提取卷积的中心部分,这样您就可以绘制结果与x之间的关系,如下所示:
C = 0.01.*conv(y, y, 'same');
plot(x, C);

https://stackoverflow.com/questions/26520123
复制相似问题