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

MATLAB中LTI系统卷积绘图报错:向量尺寸不匹配问题咨询

解决MATLAB卷积后绘图的长度不匹配问题 & ty的取值逻辑

我来给你拆解这个问题——你遇到的Vectors must be the same length报错,本质是卷积输出的y和你手动定义的时间向量ty长度对不上,核心是没搞懂离散卷积后时间轴的计算规则。

首先搞清楚:卷积输出y的长度怎么来的

当你用conv(x,h)(默认是'full'模式,完整卷积结果),输出向量y的长度固定是:

length(y) = length(x) + length(h) - 1

你手动设置的ty = 0:steps:7,它的长度是(7 - 0)/steps + 1,除非这个数刚好等于length(x)+length(h)-1,否则必然出现长度不匹配的报错。

时间向量ty的正确取值逻辑

离散卷积是连续时间卷积的数值近似,所以卷积结果的时间范围,是输入信号x(t)的时间范围与冲激响应h(t)的时间范围的叠加,具体规则分两种情况:

  • 如果用conv(x,h,'full')(完整卷积结果):
    假设x的时间轴是tx = t_x_start : steps : t_x_end,h的时间轴是th = t_h_start : steps : t_h_end,那么卷积结果的时间轴ty应该是:
    ty_start = tx(1) + th(1);
    ty_end = tx(end) + th(end);
    ty = ty_start : steps : ty_end;
    
    这个ty的长度正好等于length(x)+length(h)-1,和y完全匹配。
  • 如果用conv(x,h,'same')(输出和x长度一致的卷积结果):
    这种情况下ty直接和x的时间轴tx保持一致即可,因为结果被截断/补零到了x的长度。

结合你的场景修正代码

你的h(t)是exp(-t/2).*((t>=2)-(t>=7)),对应的时间轴是从2到7(步长steps)。假设你的x(t)是从t=0开始的(比如tx=0:steps:T),那完整卷积的时间轴起点应该是0+2=2,终点是T+7,而不是你设的0到7。

给你一份修正后的示例代码:

steps = 0.01; % 根据你的实际步长调整
% 定义输入x(t)的时间轴和信号(这里用单位阶跃示例,你替换成自己的x)
tx = 0:steps:5;
x = ones(size(tx)); 
% 定义冲激响应h(t)的时间轴和信号
th = 2:steps:7;
h = exp(-th/2).*((th>=2)-(th>=7));
% 计算完整卷积
y = conv(x,h);
% 生成匹配的时间向量ty
ty_start = tx(1) + th(1);
ty_end = tx(end) + th(end);
ty = ty_start : steps : ty_end;
% 现在绘图就不会报错了
plot(ty,y);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 06:57:38