You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Matlab中(dirac(t+1)+2*dirac(t-1))*dirac(t-3)卷积异常咨询

问题原因及修正方案

核心错误

  1. 冲激幅值被错误覆盖
    你在处理x_2 = 2*dirac(t-1)时,将Inf位置设为1,直接丢弃了系数2,导致x_2的实际幅值为1,而非理论要求的2,这会直接导致卷积结果的幅值和位置判断错误。

  2. 卷积时间轴计算完全错误
    Matlab的conv函数输出长度为length(x)+length(y)-1,你用linspace(-5,5,length(w))生成的时间轴不符合卷积的时间映射规则:
    原信号采样步长为0.1,x的时间起点是-5,y的时间起点也是-5,卷积后的时间起点应为-5 + (-5) = -10,终点为5 + 5 = 10,步长保持0.1,才能正确对应冲激的位置。

  3. 冲激位置映射偏差
    由于时间轴错误,卷积后的冲激位置被错误映射,导致你看到“2*dirac(t-1)处于t=2”的异常,实际正确位置应为t=4。

修正后的代码

%Chapter 3_a
clear all 
close all
clc

%% excercise 3

dt = 0.1;
t = -5:dt:5;

% 构造x(t) = δ(t+1) + 2δ(t-1)
x_1 = dirac(t+1);
x_1(x_1 == Inf) = 1;

x_2 = 2*dirac(t-1);
x_2(x_2 == Inf) = 2;  % 保留系数2,不覆盖为1

x = x_1 + x_2;
figure
stem(t,x)
title('原信号 x(t)')

% 构造卷积核y(t) = δ(t-3)
y = dirac(t-3);
y(y == Inf) = 1;
figure
stem(t,y)
title('卷积核 y(t)')

% 计算卷积并生成正确时间轴
w_full = conv(x,y,'full');
t_full = t(1)+t(1) : dt : t(end)+t(end);  % 正确的卷积时间轴

figure
stem(t_full, w_full)
title('卷积结果 w(t) = x(t) * y(t)')

理论验证

修正后,卷积结果完全符合预期:

  • δ(t+1)与δ(t-3)卷积得到δ(t-2)(t=-2处幅值1的冲激)
  • 2δ(t-1)与δ(t-3)卷积得到2δ(t-4)(t=4处幅值2的冲激)

内容的提问来源于stack exchange,提问作者le_P_de_la_T

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 17:50:26