西南科技大学本科生课程备课教案
计算机技术在安全工程中的应用
——Matlab入门及应用
授课教师:徐中慧
班 级:
专 业:安全技术及工程
第八章 绘图
课型:新授课
教具:多媒体教学设备,matlab教学软件
一、目标与要求
掌握matlab中二维绘图、三维绘图、子图等相关图形绘制功能。
二、教学重点与难点
本堂课教学的重点在于引导学生在编写matlab程序时能够熟练运用绘图的相关函数实现相应的功能。
三、教学方法
本课程主要通过讲授法、演示法、练习法等相结合的方法来引导学生掌控本堂课的学习内容。
四、教学内容
课后习题讲解
(1)用switch/case,menu结构编写程序求解下列问题:提示用户输入入学时间是一年、二年、三年还是四年,输入数据是字符串。根据输入数据决定期末考试的时间。其中,一年级周一考试,二年级周二考试,三年级周三考试,四年级周四考试。
Input=menu('Enter a value for your grade','one year','two years','three years','four years');
switch Input
case 1
disp('Monday')
case 2
disp('Tuesday')
case 3
disp('Wednesday')
case 4
disp('Thursday')
end
(2)编写程序,提示用户输入购买方糖的数量,输入数据是糖的块数。计算购买方糖的费用。价格确定方法是:1块=$0.75;2块=1.25;3块=1.65。当多于3块时,总费用=$1.65+$0.30*(购买数量-3)。
sugar=input('Enter a value for quantityof sugar\n');
switch sugar
case 1
fprintf('%3.0f lump sugar costs $0.75\n',sugar)
case 2
fprintf('%3.0f lump sugar cost $1.25\n',sugar)
case 3
fprintf('%3.0f lump sugar cost $1.65\n',sugar)
otherwise
output=1.65+0.3*(sugar-3);
fprintf('%3.0f lump sugars cost $%4.2f\n',sugar,output)
end
(3)用for循环结构求矢量元素的和,已知矢量x等于
x=[1 23 43 72 87 56 98 33]
用函数sum检查计算结果,并用while重写一遍程序。
x=[1 23 43 72 87 56 98 33]; a=0; for k=1:length(x) a=a+x(k); end if a==sum(x) disp(a) else disp('error') end | x=[1 23 43 72 87 56 98 33]; a=0; k=1; while k<=length(x) a=a+x(k); k=k+1; end if a==sum(x) disp(a) else disp('error') end |
(4)用函数primes求小于100的素数,用for循环计算相邻两个素数的乘积。例如,前4个素数是
2 3 5 7
计算 2*3 3*5 5*7
输出 6 15 35
x=primes(100);
for k=1:length(x)
if k+1<length(x)
a=x(k)*x(k+1);
b(k)=a;
else
break
end
end
disp(b)
引 言
大规模的数据表格很难直观表现信息内容,而工程师利用图形化技术可以使信息更加容易理解。图形化技术可以直观地反映出数据的变化趋势、最大值和最小值,也可以非常容易地检查出因计算或测量引起的错误数据点。而且,图形化数据可以让人迅速准确地判断所编写的程序是否能够得出正确的结果。
(1)二维图形
①基本绘图命令
在工程中最常用的图形是x-y坐标图。x-y坐标图就是用一系列有序数据标识出的二维坐标平面上的点,然后把这些点用直线连起来就构成二维图形。通过测量或计算得到x和y的坐标值,一般情况下,自变量x的值描绘在x轴上,因变量y的值描绘在y轴上。
%% 绘第一张图
x=0:0.2:2*pi;
y=sin(x);
plot(x,y) %绘制二维图形
%% 加修饰
title('绘制二维图形'); %添加标题
xlabel('自变量x');ylabel('因变量y'); %添加坐标轴标识
%% 加栅格
grid %添加栅格,grid on/grid off
hold on %hold/hold on保持住当前图形,hold off覆盖当前图形
pause(10)
%% 绘第二张图
y1=cos(x)
plot(x,y1,'--o')
%% 继续修饰
axis([0,2*pi,-1.2,1.2]) %设定坐标轴的范围
legend('sin(x)','cos(x)') %添加图例
gtext('sinx'); %添加文本框
gtext('cosx'); %添加文本框
命 令 | 描 述 | 运 用 |
plot | 创建一个x-y坐标图 | plot(x,y) |
title | 添加标题 | title(‘my graph’) |
xlabel | 添加x轴坐标 | xlabel(‘坐标轴名称’) |
ylabel | 添加y轴坐标 | ylabel(‘坐标轴名称’) |
grid | 添加栅格 | grid on添加栅格/grid off取消栅格 |
hold | 定义当前图形 | hold on保持当前图形/hold off覆盖当前图形 |
pause | 暂停程序,观察图形 | pause暂停程序,按任意键继续 pause(n) 继续执行前中止执行程序n秒 |
axis | 如果没有输入参数,就将坐标轴固定在当前配置状态。再次输入axis就是恢复对坐标轴的控制 | |
axis(v) | axis的输入参数是一个四维矢量,分别定义了x轴和y轴的最小值和最大值,例如:[xmin,xmax,ymin,ymax] | |
legend | legend(‘string1’,’string2’,etc),添加图例,对不同曲线加以说明 | |
text | text(x_coordinate,y_coordinate,’string’),输入参数为文本框的位置和内容 | |
gtext | gtext(’string’),添加文本框,框的位置由鼠标操作来确定 | |
注意:添加标题和坐标轴标注前要先创建图形,否则绘图命令会删除前面已经设置的标注。
命令xlabel、ylabel和title中的字符串一般用单引号结束。在matlab中也可以使用撇号(如it’s)。输入两个单引号中间可以用撇号隔开,但不能使用双引号。
②绘制多条曲线
编程过程中经常需要绘制完图形后继续进行计算,然后又绘制图形。Matlab可以随时生成和显示图形窗口,但生成的第二幅图会覆盖掉第一幅图形。怎么办?
● 用figure创建新的图形。使用figure重新打开一个新的图形窗口,并在窗口中绘制图形。
figure(n)
例如输入 figure(2),会出现一个新的图形窗口,可以在此窗口绘制下一个图形。
● 使用plot与hold on相结合
● 用plot,plot输入x矢量和y矢量分别绘制曲线
matlab等高线填充颜
plot(x1,y1,x2,y2)
如果函数plot的输入参数是一个单独的矩阵,则Matlab对矩阵的每一列单独绘图。矩阵的行下标矢量作为x轴坐标,每列所对应的数值作为y轴坐标绘制曲线。如果plot有两个自变量,一个是矢量,一个是矩阵,那么,matlab按行依次绘制图形。
x=0:pi/100:2*pi;
y1=cos(x)*2;
y2=cos(x)*3;
y3=cos(x)*4;
y4=cos(x)*5;
z=[y1;y2;y3;y4];
plot(x,y1,x,y2,x,y3,x,y4);
figure(2)
plot(x,z)
③线条、颜和标记的风格
用户可以选择实线、虚线、点和点画线作为绘图线,选择加号、星形、圆圈等形状作为标记。此外还可以选择不同的绘图颜。
x=0:0.2:2*pi;
y=sin(x);
plot(x,y,'--or')
线条、颜和标记选项
线条类型 | 标识符 | 点类型 | 标识符 | 颜 | 标识符 |
实线 | - | 点 | . | 蓝 | b |
点 | : | 圆圈 | o | 绿 | g |
点画线 | -. | X形状 | x | 红 | r |
虚线 | -- | 加号 | + | 青 | c |
星号 | * | 洋红 | m | ||
方形 | s | 黄 | y | ||
菱形 | d | 黑 | k | ||
下三角 | v | 白 | w | ||
上三角 | ^ | ||||
提 示
清除图形用clf,关闭图形窗口用close命令。
④子图
使用subplot命令可以把图形窗口分成m行n列的多个区域。函数
subplot(m,n,p)
把图形窗口分成m×n个小窗口,在第p个小窗口绘制下一个图形
窗口按从左到右,从上到下的顺序编号。
x=0:pi/100:2*pi;
subplot(2,1,1)
plot(x,sin(x));
subplot(2,1,2)
plot(x,cos(x))
⑤极坐标图
在Matlab中可以绘制极坐标图。
polar(theta,r)
根据输入角度(一般用弧度表示)和半径r绘制极坐标图
x=0:pi/100:pi;
y=sin(x);
polar(x,y)
练 习
1.定义数组theta,范围从0到2*pi,步长为0.04*pi。定义半径数组r=5*cos(4*theta)。根据theta和r的值绘制极坐标图。
theta=0:pi/100:2*pi;
r=5*cos(4*theta);
polar(theta,r)
2.数组theta保持不变,根据关系式r=5-5*sin(theta)绘制极坐标图。
theta=0:pi/100:2*pi;
r=5-5*sin(theta);
polar(theta,r)
3.定义数组theta=pi/2:4/5*pi:4.8*pi,创建6个元素的全1数组r,根据theta和r绘制极坐标图。
theta=pi/2:4/5*pi:4.8*pi;
r=ones(1,6);
polar(theta,r)
⑥条形图和饼图
条形图和饼图
bar(x) | 若x矢量,则绘制垂直条形图;若x为二维矩阵,则按行分组显示 |
barh(x) | 若x矢量,则绘制水平条形图;若x为二维矩阵,则按行分组显示 |
bar3(x) | 绘制三维条形图 |
bar3h(x) | 绘制三维水平条形图 |
pie(x) | 绘制饼图。矩阵x的元素用饼图中的一部分表示 |
pie3(x) | 绘制三维饼图。矩阵x中的元素用饼图的一部分表示 |
hist(x) | 绘制柱状图 |
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论