前文已经学会了语法和绘图函数,今天学习一个综合练习。

预备知识:高中小球斜抛的物理知识

代码如下:

%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 45 degrees.

抛物线如下:

Vo为45m/s的抛物线.png

下面对ball.m中一些代码做一点解释:

zeros(1,91) 生成1*91的零矩阵

xlabel('\bf\itx\rm\bf(meters)')

\bf表示后边字符为黑体

\it表示后边字符为斜体

\rm恢复正常字体

hold off 方便下次调用ball.m时擦除前面的figure

练习:

1.对每个角度的抛物线用不同的颜色绘制,并用图例(legend函数)标注

2.绘制同样抛射角,不同初速度的图像

用matlab绘制抛物线y的x平方,matlab绘制抛物线轨迹相关推荐

  1. 用matlab绘制抛物线y的x平方,利用matlab绘制多重x/y曲线

    今天需要画个双x轴曲线.在matlab中有plotyy()函数可方便实现双y轴曲线,而没有现成的plotxx();但是可以利用low_level函数来回绘制,程序如下: %%%%%%%%%%%%%%% ...

  2. 用matlab绘制抛物线y的x平方,我刚刚学习MATLAB,想画一下(x^2+y^2-1)^3=x^2*y^3这个曲线的图像,该怎么画呢,谢谢大家了。...

    syms x y zezsurf(x,y,1-x-2*y)如果希望去除网格可以再加上shading interp如果想让坐标轴显示比例相等,可以再加上axis equalwww.mh456.com防采 ...

  3. matlab只显示y一部分,突出显示matlab图的部分内容

    我有一个matlab图,看起来像这样: 其中每个子图的Y值存储在单维数组中.我想要做的是找到一个顶部图形高于某个高度的区域,如0.5.我还想在其他图表中突出显示相同的区域. 这是我正在谈论的一个例子: ...

  4. matlab 求x y关系,怎么用MATLAB建立数据间的函数关系

    可以使用Matlab自带的sftool工具箱,来拟合.举例说明其求解方法: 在命令窗口下,输入 >> x=[565.454 562.058 561.39 563.782 567. 941 ...

  5. matlab x和y不对应,用matlAB求x和y的对应每行的相关系数!比如x中第一行和y中第一行的相关系数!依次的到没行的一个相关系数...

    匿名用户 1级 2012-09-19 回答 x=[ 0.3145 0.5218 0.2233 0.0173 0.64417 0.3453 0.1452 0.5542 0.7498 0.235974 0 ...

  6. 怎么找到一抛物线数组的顶点_抛物线与顶点坐标的关系如何确定抛物线开口是向上还是向下?知道抛物线的定点坐标,和x轴的交点或y轴的交点,怎么求抛物线的解析式?抛物线的顶点坐标与抛物线还有什么关系?...

    我想这个你应该有用一.理解二次函数的内涵及本质 . 二次函数 y=ax2 + bx + c ( a ≠ 0 , a . b . c 是常数)中含有两个变量 x . y ,我们只要先确定其中一个变量,就 ...

  7. matlab绘制X,Y二维散点图并标出序号

    matlab绘制X,Y二维散点图并标出序号 标签: matlab 2016-11-22 12:20 193人阅读 评论(0) 收藏 举报  分类: matlab(1)  版权声明:本文为博主原创文章, ...

  8. matlab绘制曲线y=x3 x 1程序,[转载]Matlab绘图操作(1)

    1 二维数据曲线图 1.1 绘制单根二维曲线 plot函数的基本调用格式为:plot(x,y) 其中x和y为长度相同的向量,分别用于存储x坐标和y坐标数据. 例1 在0≤x≤2p区间内,绘制曲线 y= ...

  9. matlab 绘制函数 y = 7x / (8-7*x) 的图形

    任务:绘制函数 y = 7x / (8-7*x) 的图形 备注:代码表示形式为VBScript 最终正确形式: clc; x = 0:0.01:1; y = (7*x)./(8-7*x) plot(x ...

最新文章

  1. sota如何创建作业及配置作业文件详解(章节5)
  2. vncview 多屏_OpenStack中VNC协议实现多屏共享(多屏不踢访问)
  3. URL与URI的不同
  4. vscode正则表达式替换php数组,vscode正则替换
  5. fft重叠帧_关于FFT实时频谱的几个基本概念 | 科创仪表局
  6. 对弈(nim-k游戏博弈)
  7. 夫妻经典小笑话····
  8. python学习笔记 -- map() 操作可迭代序列
  9. mysql存储过程之异常处理篇
  10. Hadoop安装教程_单机/伪分布式配置_Hadoop 2.7.7(2.7.7)/CentOS Linux release 7.4.1708
  11. 一位瑞典程序员的创业感悟
  12. FAT,FAT32,NTFS
  13. 团队项目(3) -- 搭载于MSP430F6638_FFTB的仿《像素小鸟》小游戏
  14. python轻松生成pdf文档
  15. mysql rownum写法_mysql应用之类似oracle rownum写法
  16. Dart factory 快速理解
  17. Oracle项目管理系统之设计任务下达及成果交付
  18. C语言.h文件的作用
  19. 脑残手贱:被NFS祸害的调度系统
  20. serverlet 原理_serverlet_servlet工作原理面试题_serverlet和jsp(3)

热门文章

  1. python抠图太模糊,讲实话,我会Python之后!我都不屑用PS了!Python抠图太方便了!...
  2. 整理《我三年开发经验,从字节跳动抖音组离职后,一口气拿到15家公司Offer》
  3. 分贝通携手衡石科技,用心护好客户「钱袋子」 增收节流数百万
  4. 大学生选课抢课如何提高选中概率
  5. 百问网7天物联网记录(二)
  6. 湖北计算机一级证书样本,湖北计算机一级(Hubei computer level).doc
  7. IDB数据桥提供方用oracle,WinCC与第三方系统数据交互IndustrialDataBridge(54页)-原创力文档...
  8. c# 桌面录屏,生成视频方案总结
  9. Collectors.joining()
  10. vue部署到内网和外网配置简要说明