www.gusucode.com > matlab通信工程仿真源码(张德丰等编著)程序书籍 > matlab_code/matlab通信工程仿真源码(张德丰等编著)/第5章/li5_1.m

    clear all;
g=9.8;         %重力加速度
v0=0;          %初始速度
y0=1.2;        %初始位置
m=1.8;         %小球质量
t0=0;          %起始时间
K=0.85;         %弹跳的损耗系数
n=5000;        %仿真的总步长
dt=0.001;      %仿真步长
v=v0;          %初状态
y=y0;
for k=1:n
    if(y>0)|(v>0)       %小球在空中的动力方程计算
        v=v-g*dt;
        y=y+v*dt;
    else                %如果碰击作如下计算
        y=y-K.*v*dt;
        v=-K.*v-g*dt;
    end
    s(k)=y;          %当前位移记录到s数组中以便作图    
end
t=t0:dt:dt*(n-1);    %仿真时间
plot(t,s,'r:');
xlabel('时间/s');
ylabel('位移y(t)/m');
axis([0 5 0 1.2]);


 clear all;
g=9.8;         %重力加速度
v0=0;          %初始速度
y0=1.2;        %初始位置
m=1.8;         %小球质量
t0=0;          %起始时间
K=0.85;         %弹跳的损耗系数
n=5000;        %仿真的总步长
dt=0.005;      %仿真步长
v=v0;          %初状态
y=y0;
for k=1:n
    if(y>0)      %小球在空中的动力方程计算
        v=v-g*dt;
        y=y+v*dt;
    else                %如果碰击作如下计算
        y=y-K.*v*dt;
        v=-K.*v-g*dt;
    end
    plot(t,s,'ro');
    axis([-2 2 0 1]);
    set(gcf,'DoubleBuffer','on');
    drawnow;
end