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