matlab 差分方程通用程序 一点问题
程序 如下 :
a=input('差分方程左端的系数向量a=[a(1),...a(na)] a=');
b=input('差分方程右端的系数向量b=[b(1),...b(na)] b=');
u=input('输入信号序列 u=');
na=length(a);
nb=length(b);
nu=length(u);
s=['起算点前',int2str(na-1),'点y的值=[y(',int2str(na-2),'),...y(0)]='];
ym=zeros(1,na+nu-1);ym(1:na-1)=input(s);
um=[zeros(1,na-2),u];
for n=na:na+nu-1
ys=ym(n-1:-1:n-na+1);
us=um(n:-1:n-nb+1);
ym(n)=(b*us'-a(2:na)*ys')/a(1);
end
y=ym(na:na+nu-1);sten(y),grid on;
line([0,nu],[0,0]);
运行程序 输入
差分方程左端的系数向量a=[a(1),...a(na)] a=[1,0.1,0.15,-0.225]
差分方程右端的系数向量b=[b(1),...b(na)] b=[3,7,1]
输入信号序列 u=exp(0.1*[1:20])
起算点前3点y的值=[y(2),...y(0)]=[0,0,0]
??? Index exceeds matrix dimensions.
Error in ==> ca at 12
us=um(n:-1:n-nb+1);
求解释 感谢
追问:能不能修改一下
我这要求是通用性的
得运行程序后 输入任意数值
1、for n=na:na+nu-1 =》 for n=na:na+nu-2
2、sten =》 stem
后
输入任意数值 不出图像
感谢