gpt4 book ai didi

matlab - 为什么我不能让卷积在 MATLAB 中正常工作?

转载 作者:太空宇宙 更新时间:2023-11-03 20:34:44 26 4
gpt4 key购买 nike

MATLAB 中的卷积信号每次都会产生意想不到的结果。以下面的代码为例,其中我尝试将 rect 函数与其自身进行卷积:

clc

clear all

x=-5:.01:5;

y=rectangularPulse(x);

C=conv(y,y);

plot(C)

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

最佳答案

这里的部分混淆是您正在处理的信号 y 是离散的,其样本在 x 中间隔 0.01 .另外CONV似乎为多项式乘法拉双重责任。来自帮助文档:

If u and v are vectors of polynomial coefficients, convolving them is equivalent to multiplying the two polynomials.

Convolution涉及在将一条曲线滑过另一条曲线时计算相交曲线下的面积。 CONV 通过简单地乘以重叠样本点并基本上假设样本之间的距离值为 1(即近似曲线下面积的矩形 strip 的宽度)来实现离散版本。要获得真正的卷积,您必须按 0.01 的样本间距缩放生成的近似区域。此外,您需要使用 'same' 参数提取卷积的中心部分,以便您可以绘制结果与 x 的关系图,如下所示:

C = 0.01.*conv(y, y, 'same');
plot(x, C);

enter image description here

关于matlab - 为什么我不能让卷积在 MATLAB 中正常工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26520123/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com