matlab - 为什么从matlab获得的卷积与理论上获得的不同?

标签 matlab signal-processing convolution

指数函数与正弦函数卷积的理论结果如下所示。

enter image description here

当我直接使用 matlab 绘制函数时,我得到了这个, Direct plot of the analytical result

但是 Matlab conv 命令产生了这个, Plot obtained from Matlab

这两个图看起来很相似但并不相同,请看比例尺。 matlab产率是理论结果的十倍。为什么?

matlab代码在这里。

clc;
clear all;
close all;
t = 0:0.1:50;
x1 = exp(-t);
x2 = sin(t);
x = conv(x1,x2);
x_theory = 0.5.*(exp(-t) + sin(t) - cos(t));

figure(1)
subplot(313), plot(t, x(1:length(t))); subplot(311), plot(t, x1(1:length(t))); subplot(312), plot(t, x2(1:length(t)))

figure(2)
subplot(313), plot(t, x_theory); subplot(311), plot(t, x1(1:length(t))); subplot(312), plot(t, x2(1:length(t)))

最佳答案

conv 执行离散时间 卷积,它不执行数学积分函数。在数值上,这基本上意味着将两个信号的结果多次相乘和相加,每个点一次,其中一个信号有一个小的偏移。

如果你仔细想想,你就会意识到信号的采样会产生影响。即,如果每 0.1 个值或 0.001 个值有一个点,则乘以的点数不同,因此结果的值不同(而不是形状)。

因此,每次进行数值卷积时,总是需要乘以采样率,以“归一化”操作。

只需更改代码即可

sampling_rate= 0.1;
t = 0:sampling_rate:50;
x = conv(x1,x2)*sampling_rate;

关于matlab - 为什么从matlab获得的卷积与理论上获得的不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66777561/

相关文章:

matlab - 使用 MATLAB 获取信号的包络

c++ - 如何在OpenCV中实现一个等价于bwmorph Matlab函数的函数

python - Python 中 FFT 峰值下的面积

audio - 快速频率测量

matlab - 将通带信号转换为基带等效模型以降低采样率和样本数

c - ppm 文件的图像卷积

java - 图像卷积不根据实际算法工作

MATLAB 和字符编码 : How to run/edit an ISO8859-1 m-file in a UTF-8 system?

matlab - 将两个 wav 文件的左右声道合并为一个单独的立体声文件

python - 如何正确计算 tf.nn.weighted_cross_entropy_with_logits pos_weight 变量