matlab绘制抛物线轨迹
2017-12-13 16:55
519 查看
前文已经学会了语法和绘图函数,今天学习一个综合练习。
预备知识:高中小球斜抛的物理知识
代码如下:
将上述代码保存为ball.m,在matlab的命令窗口,输入ball后回车。输入不同的初始速度。运行情况如下:
抛物线如下:
xlabel(‘\bf\itx\rm\bf(meters)’)
\bf表示后边字符为黑体
\it表示后边字符为斜体
\rm恢复正常字体
\theta 参照文本字符串的高级控制
hold off 方便下次调用ball.m时擦除前面的figure
2.绘制同样抛射角,不同初速度的图像
预备知识:高中小球斜抛的物理知识
代码如下:
%Purpose: %This program calculates the distance traveled by a ball throw at a %specified angle "theta" and a spedified velocity "vo" from a %point,ignoring air friction.It calculates the angle yielding maximum %range,and also plots selected trajectories. % %Define variable: %conv Degrees to adians conv factor %grav The gravity acceleration %ii,jj Loop index %index The maximum range in array %maxangle The angle that gives the maximum range %maxrange Maximum range %time Time %theta Initial angle %fly_time The total trajectory time %vo The initial velocity %vxo x-component of the initial velocity %vyo y-component of the initial velocity %x x position of ball %y y position of ball %定义常数数值 conv=pi/180; grav=-9.82; vo=input('Enter the initial velocity:'); range=zeros(1,91); %计算最大水平距离 for ii = 1:91 theta = ii -1; vxo = vo * cos(theta * conv); vyo = vo * sin(theta * conv); max_time = -2 * vyo/grav; range(ii) = vxo * max_time; end %显示计算水平距离的列表 fprintf('Angle versus Range\n'); for ii = 1:5:91 theta = ii-1; fprintf('%2d\t\t%8.4f\n',theta,range(ii)); end %计算最大的角度和水平距离 [maxrange,index]=max(range); maxangle = index -1; fprintf('\n Max range is %8.4f at %2d degrees.\n',maxrange,maxangle); %绘制轨迹图形 for ii = 5:10:80 theta =ii; vxo = vo*cos(theta*conv); vyo = vo*sin(theta*conv); max_time = -2 * vyo/grav; %计算小球轨迹的x、y坐标数值 x=zeros(1,21); y=zeros(1,21); for jj=1:21 time = (jj-1) * max_time/20; x(jj) = vxo * time; y(jj) = vyo * time + 0.5 * grav * time^2; end plot(x,y,'g'); if ii == 5 hold on; end end %添加图形的标题和坐标轴名称 title('\bf Trajectory of Ball vs Initial Angle \it\theta'); xlabel('\bf\itx\rm\bf(meters)'); ylabel('\bf\ity\rm\bf(meters)'); axis([0,max(range)+5,0,-vo^2/2/grav]); grid on; %绘制最大水平的轨迹图形 vxo = vo * cos(maxangle * conv); vyo = vo * sin(maxangle * conv); max_time = -2 * vyo/grav; %计算(x,y)点 x = zeros(1,21); y = zeros(1,21); for jj = 1:21 time = (jj -1)*max_time/20; x(jj) = vxo * time; y(jj) =vyo * time + 0.5 * grav * time ^ 2; end plot(x,y,'r','Linewidth',2); hold off;
将上述代码保存为ball.m,在matlab的命令窗口,输入ball后回车。输入不同的初始速度。运行情况如下:
>> ball Enter the initial velocity:45 Angle versus Range 0 0.0000 5 35.8083 10 70.5286 15 103.1059 20 132.5504 25 157.9674 30 178.5847 35 193.7757 40 203.0790 45 206.2118 50 203.0790 55 193.7757 60 178.5847 65 157.9674 70 132.5504 75 103.1059 80 70.5286 85 35.8083 90 0.0000 Max range is 206.2118 at 4 4000 5 degrees.
抛物线如下:
下面对ball.m中一些代码做一点解释:
zeros(1,91) 生成1*91的零矩阵xlabel(‘\bf\itx\rm\bf(meters)’)
\bf表示后边字符为黑体
\it表示后边字符为斜体
\rm恢复正常字体
\theta 参照文本字符串的高级控制
hold off 方便下次调用ball.m时擦除前面的figure
练习:
1.对每个角度的抛物线用不同的颜色绘制,并用图例(legend函数)标注2.绘制同样抛射角,不同初速度的图像
相关文章推荐
- 用matlab 绘制osg平台得到路径轨迹
- 4.4 绘制根轨迹的MATLAB函数
- MATLAB中comet、comet3函数-绘制质点运动轨迹
- MATLAB绘图基础02-双坐标轴绘制
- matlab中三维图形绘制函数
- MATLAB画图入门篇--各种基本图形绘制的函数与实例
- matlab根轨迹
- opencv学习之旅_绘制跟踪轨迹
- vb.net中如何快速绘制鼠标移动轨迹
- 解决高德地图锁屏黑屏定位不更新,高德地图绘制定位轨迹,高德定位判断定位停留点,高德地图将所有坐标绘制在可视区域内
- MATLAB 图像处理 灰度图 将图像中某一行或者某一列的灰度值 绘制成一条曲线
- Unity3D研究之与根据动态的两个轨迹点绘制面详解
- MATLAB三维散点图的绘制(scatter3、plot3)
- windows下运用matlab绘制caffe训练日志文件中的loss曲线
- unity抛物线,平均速度下的运动轨迹
- iOS百度地图SDK之实时绘制轨迹(后台仍执行)
- Unity绘制抛物线
- matlab 绘制条形图
- Matlab绘制三维曲面(以二维高斯函数为例)
- iOS开发之在地图上绘制出你运动的轨迹