【发布时间】:2019-03-28 13:14:55
【问题描述】:
我有这个差分方程y[n] + a1 y[n − 1] = x[n] 和初始条件y(-1) = 0,我已经实现了这个,但我不明白如何实现初始条件y(-1) = 0 我不允许使用内置函数在 Matlab 中,例如 filtic 或 filter
clc;
clear;
close all;
x = zeros(1,20);
x(1) = 1;
a1 = -0.8;
N = length(x); % Length of input signal
y = zeros(size(x)); % Allocate space for outut
y(1) = -a1*x(1); % First sample, assuming x(0) = 0
%y(1) = 0; % First sample, assuming x(0) = 0
for n=2:N % Remaining samples
y(n) = -a1*y(n-1) + x(n);
end
nn=-1:18;
stem(nn,x,'b');
hold on
stem(nn,y,'r');
box on
axis([-1 20 -1.5 1.5]);
xlabel('n');
ylabel('x(n) och y(n)');
legend('x(n)','y(n)');
【问题讨论】:
-
您可能想要创建一个array function、anonymous function 或类似的东西。
-
另外,
x(1)=-1不应该因为你的初始条件吗? -
你用
y(1) = 0注释掉的那一行解决了你的问题——你为什么把它注释掉?您不会在任何地方更新x(n),所以它全为零,但对于第一个元素,这似乎不是所需的行为? -
@Wolfie 就在那里,我不明白,当我使用该行运行时,输出信号仅为 0。我已经使用内置命令
filter测试了代码代码与使用filter的代码不同,所以有些地方我做错了一些事情,导致它们不同。
标签: matlab filter signal-processing