MATLAB中的向量大小不匹配

古拉卜

我一直在尝试为LTI系统编写代码,在该系统中,响应是根据输入x(t)和脉冲h(t)响应来计算的

对于下面的代码部分:

y = conv(x,h).*steps;
ty = 0:steps:7;
plot(ty,y);

我收到以下错误消息:

使用plot
向量的错误必须具有相同的长度。

我使用的ty = 0:steps:7;ash(t)被定义为exp(-t/2).*((t>=2)-(t>=7))(因为它一直扩展到t=7)。

实际决定ty什么?

迈克尔·特尔7

使用匿名函数进行卷积

执行此过程的一种方法是使用匿名函数/函数句柄,该函数由@()在这种情况下保存输入参数的所指示t为了创建截断的信号,t可以执行条件语句要使信号范围从t=2t=7秒,可以通过逐个元素乘以来截断((t>=2) & (t<=7))t用于绘制最终结果向量必须具有一个时间范围,该时间范围是卷积过程中使用的信号的时间长度之和。我相信ty是绘制输出所依据的时间向量。在这种情况下,必须确保ty具有与输出相同的长度y

结果长度=系统响应长度+输入信号长度


在以下情况下:
x(t)→长度= 1s
h(t)→长度= 5s(2s至7s)
y(t)→长度= 1s + 5s = 6s(2s至8s)

卷积结果

Step_Size = 0.1;
Start_Time = 0; End_Time = 7;
t = Start_Time: Step_Size: End_Time;

%Input into system x(t)%
x = @(t) 1.0.*(t >= 0 & t <= 1);
subplot(3,1,2); fplot(x);
title('x(t): Input into system');
xlabel('Time (s)'); ylabel('Amplitude');
xlim([0 10]);
ylim([0 1.1]);

%System impulse response h(t)%
h = @(t) exp(-t/2).*((t>=2) & (t<=7));
subplot(3,1,1); fplot(h);
title('h(t): System impulse response');
xlabel('Time (s)'); ylabel('Amplitude');
xlim([0 10]);

y = conv(x(t),h(t)).*Step_Size;
t = linspace(0,2*max(t),length(y));
subplot(3,1,3); plot(t,y);
title('y(t): Output/System Response');
xlabel('Time (s)'); ylabel('Amplitude');

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

TOP 榜单

热门标签

归档