plot(T,Y)
----------------------
function dy=rigid(t,y)
dy=zeros(3,1);
dy(1)=y(2)y(3);
dy(2)=-y(1)y(3);
dy(3)=-051y(1)y(2);实现差分方程,先从简单的说起:
filter([1,2],1,[1,2,3,4,5]),实现y[k]=x[k]+2x[k-1]
y[1]=x[1]+20=1 (x[1]之前状态都用0)
y[2]=x[2]+2x[1]=2+21=4
(2)y=conv(x,h)是用来实现卷级的,对x序列和h序列进行卷积,输出的结果个数等于x的长度与h的长度之和减去1。
卷积公式:z(n)=x(n)y(n)= ∫x(m)y(n-m)dm
程序一:以下两个程序的结果一样
(1)h = [3 2 1 -2 1 0 -4 0 3]; % impulse response
x = [1 -2 3 -4 3 2 1]; % input sequence
y = conv(h,x);
n = 0:14;
subplot(2,1,1);
stem(n,y);
xlabel('Time index n'); ylabel('Amplitude');
title('Output Obtained by Convolution'); grid;
(2)x1 = [x zeros(1,8)];
y1 = filter(h,1,x1);
subplot(2,1,2);
stem(n,y1);
xlabel('Time index n'); ylabel('Amplitude');
title('Output Generated by Filtering'); grid;function dy = rigid(t,y)
dy = zeros(3,1); % a column vector
dy(1) = y(2) y(3);
dy(2) = -y(1) y(3);
dy(3) = -051 y(1) y(2);
options = odeset('RelTol',1e-4,'AbsTol',[1e-4 1e-4 1e-5]);
[T,Y] = ode45(@rigid,[0 12],[0 1 1],options);
这里面的Y就是所有的函数值
画图:
plot(T,Y(:,1),'-',T,Y(:,2),'-',T,Y(:,3),'')
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)