1.报错说我未定义函数变量data_sx
2,说我data_y data_sx data_sz 会因为迭代次数而改变,让我预先分配内存。
以上这两个问题怎么解决呢?
%设置模型参数
m=0.1; %小球质量
g=9.8; %重力加速度
k=0.9; %碰撞的损耗系数
v0=0; %初始速度
y0=1; %初始位置
vx0=0;
vz0=0;
sx0=0;
sz0=0;
%设置仿真参数
tStart=0; % 仿真起始时间
tFinal=10; % 仿真终止时间
dt=(tStart-tFinal)/5000; %仿真步长
%设置初始状态
v=v0;
y=y0;
vx=vx0;
vz=vz0;
sx=sx0;
sz=sz0;
count=0;
for t=tStart:dt:tFinal
count=count+1;
%小球动力方程计算
if (y>0)||(v>0)
%小球在空中时的计算
v=v-g*dt;
y=y+v*dt;
else
%小球在碰撞瞬间的计算
v=-k*v-g*dt;
y=-k*v*dt;
end
Fx=randn;
ax=Fx/m;
vx=vx+ax*dt;
sx=sx+vx*dt;
Fz=randn;
az=Fz/m;
vz=vz+az*dt;
sz=sz+vz*dt;
%将当前三个方向的位移记录下来以方便作图
data_y(count)=y;
data_sx(count)=sx;
data_sz(count)=sz;
end
%绘制仿真结果
plot(data_sx,data_sz,data_y, '.')
axis([-4 4 -4 4 0 1]);
xlabel('x方向位移');
ylabel('z方向位移');
zlabel('y方向位移')
title('小球弹跳过程')
grid on