《Matlab课程设计》
——图像与动画
班级:
姓名:
学号:
时间:
地点:
指导教师:
自 动 化 教 研室
Matlab课程设计
目 录
一. 课程设计目的与要求
二. 课程设计课题的分析
三. 课程设计的内容与安排
四. 课程设计的步骤
五. 课程设计的结果
六. 参考文献
七. 附录
Matlab课程设计
一. 课程设计目的与要求
1. 课程设计目的:
(1)进一步理解和消化书本知识,运用所学知识和技能进行简单
的设计
(2)通过课程设计提高应用能力,为专业课的学习打下基础
(3)培养查阅资料的习惯,训练和提高独立思考和解决问题的能力
(4)通过命令显示图像,完成简单动画的制作,结合程序设计培养知识综合运用能力和技巧。
2. 课程设计要求
从课程设计的目的出发,通过设计工作的各个环节,达到以下要
求:
(1) 能够正确理解课设的题目和意义,全面思考问题
(2) 运用科学合理的方法,认真按时完成
二. 课程设计课题的分析
1.图像:
通过imread.imadd.imshow.imnoise.imrotate…等函数的调用实现对图像属性的改变。
2.动画
对于动画的设计我有几个思路。(1)建立一个矩阵,把图片读出来放到矩阵中,再通过moviein函数播放,但是实验了几次也没有成功。
(2)画一个三维图,通过改变属性实现三维图的转动来达到动画效果。
Matlab课程设计
(3)先装入一张背景图,再通过编程使图片产生动画效果。
通过尝试我选了第三种方法。
三.课设的内容与安排
内容:
1.利用matlab调用磁盘目录下的图片文件;
2.制作实时动画;
3.制作演示系统,通过点击不同的按键显示不同的图形。
时间安排参考如下教学时间安排
教学安排;
周一 布置任务,查阅资料
周二 设计
周三 设计
周四 仿真、调试
周五 验收、总结报告
四.课程设计的步骤
1.图像
采用imread函数
g0=imread('C:\Users\toshiba\Desktop\matlab\q.jpg');%读取文件名为q的图像。
Imadd:增加亮度,
imnoise:添加噪声,
imrotate:旋转
grayslice:索引色
在一个figure框显示多幅效果图用subplot函数
源程序见附录1。
Matlab课程设计
2.动画制作
动画的源程序:
A=imread('C:\Users\toshiba\Desktop\matlab\69.jpg');%背景图像
h=figure;
imshow(A); %显示
hPush = findall(0,'Type','uiPushTool');
hToggle = findall(0,'Type','uiToggleTool');
htogglesplit=
findall(0,'Type','uitogglesplittool');
set([hPush;hToggle;htogglesplit],'Visible','off');%隐藏工具栏
axes
axis([0 1 0 1]); %设置坐标范围
axis off;
set(gcf,'color','k'); %设置背景颜色为黑色
N=20;
handles=zeros(1,N);
x=rand(2,N);
fontsize=floor(rand(1,N)*17+32); %设置字号
new_handles_N=0;
for i=1:N
handles(i)=text(x(1,i),x(2,i),'*','fontsize',fontsize(i),'color','w'); %handles ?存储每一个雪花的句柄
end
while 1
if ~ishandle(h)
return
end
for i=1:N
temp=get(handles(i),'position');
step=get(handles(i),'fontsize')/48*0.05; % ?不同的雪花速度不同
if temp(2)<0 判断是否溢出
new_handles_N=new_handles_N+1;
new_handles(new_handles_N)=
Matlab课程设计
copyobj(handles(i),gca);
if new_handles_N==500
delete(new_handles);
new_handles_N=0;
end
temp(1)=rand(1);
temp(2)=1;
else
temp(1)=temp(1)+rand(1)*0.1-0.05; temp(2)=temp(2)-step; %速度
end
set(handles(i),'position',temp,'rotation',get(handles(i),'rotation')+5);
end
pause(.2)
end
3.GUI的设计
(1)新建一个gui,添加push button组件,添加axes组件。
(2)点击运行,在弹出的editor窗口编程
Matlab课程设计
五. 课设结果
1.图像
二.动画
圣诞
Matlab课程设计
Matlab课程设计
跳动的心
Matlab课程设计
六.课设的心得体会
为期一周的课程设计就要结束了;通过这些天的学习,我深深地知道了学任何知识都要虚心,都要扎实的学,在这一个星期了,我学到了很多书本上没有学到的东西,例如对图像的各种分析处理;对动画的初步制作,虽然有的程序是参考别人弄好的,可通过读程序,改程序,最后做出了自己心满意足的效果,我觉得我还是赚到了。
在课设开始,做图片的时候,由于书上有好多实例,感觉很简单,便觉得这课设没什么压力啊。可是再开始做动画后,我眉头皱起来了。我初期的构想是通过读图来实现动画,可是试了N多程序还是不行,苦恼了一天多,查了好多资料,还是不行,真的觉得自己太笨了。没办法,必须得改变思路了,不然就无法再规定时间内完成课设了。
在matlab论坛上看了很多人的技术帖,视野开拓了许多,最后也如愿的完成了课设。
Matlab课程设计
七.参考文献
[1] 崔新忠.MATLAB与仿真系统课程设计指导书.自编教材,20xx年
[2] 作者:赖志国.Matlab图像处理与应用 .2007
[3]刘卫国.MATLAB程序设计与应用(第二版).北京:高等教育出版社,20xx年
[4] 张强,王正林. 精通MATLAB图像处理.2009
Matlab课程设计 附录1
图像处理的源程序:
clear all
figure('menubar','none');
g0=imread('C:\Users\toshiba\Desktop\matlab\21425140365341500.jpg');
subplot(331);imshow(g0) ;title('原图');
g2=imadd(g0,100);
subplot(332);imshow(g2);title('亮度增加100') ;
g1=imnoise(g0,'salt & pepper',0.2);
g1=im2double(g1);
subplot(333);imshow(g1);title('加入椒盐噪声');
g4=imrotate(g0,45,'bilinear');
subplot(334);imshow(g4);title('左旋45') ;
g5=grayslice(g0,64) ;
subplot(335);imshow(g5,hot(64)) ;title('索引色');
g0 = g0(:,:,2);
subplot(336);imshow(g0,[50,150]);title('灰度级
[50,150]') ;
g1=imnoise(g0,'salt & pepper',0.2);
g1=im2double(g1);
h6=fspecial('average');
g7=filter2(h6,g1,'same');
subplot(337);imshow(g7);title('进行均值滤波');
subplot(338);imhist(g0);title('图像直方图');
g6=im2bw(g0) ;subplot(339); imshow(g6);title('二值')
Matlab课程设计 附录2:
跳动的心源程序:
close all
figure('menubar','none');
x = linspace(-2,2,100);
[X,Y,Z] = meshgrid(x,x,x);
I1 =
(X.^2+9/4*Y.^2+Z.^2-1).^3-X.^2.*Z.^3-9/80*Y.^2.*Z.^3;
p = patch(isosurface(X,Y,Z,I1,0));
set(p, 'FaceColor', 'red', 'EdgeColor', 'r'); set(gcf,'color','y');
view(3);
axis equal ;
axis off;
light('Posi',[0 -2 3]);
% 在(0,-2,3)点建立一个光源?
lighting phong
set(gca,'nextplot','replacechildren');
%记录
XX = get(p,'XData');
YY = get(p,'YData');
ZZ = get(p,'ZData');
for j = 1:20
bili = sin(pi*j/20);
set(p,'XData',bili*XX,'YData',bili*YY,'ZData',bili*ZZ)
F(j) = getframe;
end
movie(F,10)
第二篇:matlab报告1
武汉理工《Matlab应用课程设计》课程设计说明书
目 录
课程设计任务书......................................1
1 Matlab 软件简介...................................3
2 设计题目..........................................4
3 设计内容..........................................6
4 课程设计心得......................................18
5 参考文献..........................................19
6 本科生课程设计成绩评定表..........................20
武汉理工《Matlab应用课程设计》课程设计说明书
课程设计任务书
学生姓名: 陈 冲 专业班级: 电信0804 指导教师: 祝立华 工作单位: 信息工程学院 题 目: Matlab运算与应用设计7 初始条件:
1.Matlab6.5以上版本软件;
2.课程设计辅导资料:“Matlab语言基础及使用入门”、“数字信号处理原理与实现”、“Matlab及在电子信息课程中的应用”等;
3.先修课程:信号与系统、数字信号处理、Matlab应用实践及信号处理类课程等。
要求完成的主要任务: (包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)
1. 本课程设计统一技术要求:研读辅导资料对应章节,对选定的设计题目进行
理论分析,针对具体设计部分的原理分析、建模、必要的推导和可行性分析,画出程序设计框图,编写程序代码(含注释),上机调试运行程序,记录实验结果(含计算结果和图表),并对实验结果进行分析和总结。具体设计要求包括:
① 初步了解Matlab、熟悉Matlab界面、进行简单操作;
② MATLAB的数值计算:创建矩阵、矩阵运算、多项式运算、线性方程组、
数值统计;
③ 基本绘图函数:plot, plot3, mesh, surf等,要求掌握以上绘图函数的用法、
简单图形标注、简单颜色设定等;
④ 使用文本编辑器编辑m文件,函数调用;
⑤ 能进行简单的信号处理Matlab编程;
2. 课程设计说明书按学校“课程设计工作规范”中的“统一书写格式”撰写,
具体包括:
① 目录;
② 与设计题目相关的理论分析、归纳和总结;
③ 与设计内容相关的原理分析、建模、推导、可行性分析;
④ 程序设计框图、程序代码(含注释)、程序运行结果和图表、实验结果分
析和总结;
⑤ 课程设计的心得体会(至少500字);
⑥ 参考文献;
其它必要内容等。
- 1 -
武汉理工《Matlab应用课程设计》课程设计说明书
时间安排:
指导教师签名: 年 月 日
系主任(或责任教师)签名: 年 月 日
- 2 -
武汉理工《Matlab应用课程设计》课程设计说明书
1 Matlab 软件简介
MATLAB是美国MathWorks公司生产的一个为科学和工程计算专门设计的交互式大型软件,是一个可以完成各种精确计算和数据处理的、可视化的、强大的计算工具。它集图示和精确计算于一身,在应用数学、物理、化工、机电工程、医药、金融和其他需要进行复杂数值计算的领域得到了广泛应用。它不仅是一个在各类工程设计中便于使用的训‘算工具,而且也是一个在数学、数值分析和工程计算等课程教学中的优秀的教学工具,在世界各地的高等院校中十分流行,在各类工业应用中更有不俗的表现。MATLAB可以在几乎所有的PC机和大型计算机上运行,适用于Windows、UNIX等多种系统平台。
1.1 MATLAB产生的历史背景
MATLAB名称是由两个英文单词Ma~ix和Laboratory的前二个字母组成。20世纪70年代后期,美国新墨西哥大学计算机系主任Cleve.Moler教授为了便于教学,减轻学生编写Fortran程序的负担,为两个矩阵运算软件包Linpack和Eispack编写了接口程序,这也许就算MATLAB的第一个版本。19xx年,在JackLittle(也称JohnLittle)的建议推动下,由Little、Moler、SteveBangert三人合作,成立rMathWorks公司,同时把MATLAB正式推向市场。从那时开始,MATLAB的源代码采用C语言编写,除加强了原有的数值计算能力外,还增加了数据图形的可视化功能。19xx年,MathWorks公司推出了MATLAB的4.0版本,系统平台由DOS改为Windows,推出了功能强大的、可视化的、交互环境的用于模拟非线性动态系统的工具Simulink,第一次成功开发出了符号计算工具包Symbolic Math Toolbox 1.0,为MATLAB进行实时数据分析、处理和硬件开发而推出了与外部直接进行数据交换的组件,为MATLAB能融科学计算、图形可视、文字处理于一体而制作了Notebook,实现了MATLAB与大型文字处理软件Word的成功对接。至此,MathWorks使MATLAB成为国际控制界公认的标准计算软件。 19xx年,MathWorks公司推出了MATLAB的5.0版本,紧接着产生了5.1、
5.2版本,至19xx年MATLAB发展到5.3版本。MATLAB拥有了更丰富的数据类型和结构,更好的面向对象的快速精美的图形界面,更多的数学和数据分析资源,MATLAB工具也达到了25个,几乎涵盖了整个科学技术运算领域。在大部分大学里,应用代数、数理统计、自动控制、数字信号处理、模拟与数字通信、时间序列分析、动态系统仿真等课程的教材都把MATLAB作为必不可少的内容。在国际学术界,MATLAB被确认为最准确可靠的科学计算标准软件,在许多国际一流的学术刊物上都可以看到MATLAB在各个领域里的应用。
MATLAB当前推出的最新版本是7.0版(R14),本书无特殊注明均指7.0版。
1.2 MATLAB的语言特点和开发环境
MATLAB作为一种科学计算的高级语言之所以受欢迎,就是因为它有丰富的函数资源和工具箱资源,编程人员可以根据自己的需要选择函数,而无需再去编写大量繁琐的程序代码,从而减轻了编程人员的工作负担。被称为第四代编程语言的MATLAB最大的特点就是简洁开放的程序代码和直观实用的开发环境。具体地说MATLAB主要有以下特点:
(1)库函数资源丰富
数百种库函数大大减轻了用户子程序的编写工作量,也避免了一些不必要的错误,因而用户也不必担心程序的可靠性问题。
- 3 -
武汉理工《Matlab应用课程设计》课程设计说明书
(2)语言精炼,代码灵活
MATLAB的编程语言符合人们的思维习惯,对代码的书写也没有特别严格的控制,语言精炼,程序的亢余度非常小。
(3)运算符多而灵活
MATLAB的内核是用c语言编写的,它为用户提供了和C语言一样多的运算符,用户运用这些运算符可以使程序更加简炼。
(4)面向对象,控制功能优良
MATLAB在5.x各版本中优化了数据结构,使得程序的结构化控制更精良,面向对象的功能更加友善。特别是当前的7.0版,在可视化编程方面比以前的版本又有了更大的提高,使界面编程更方便、自由。
(5)程序设计自由
MATLAB7.0版支持长变量名达到63个字符,用户可以不对矩阵进行预定义就使用,变量和数组的应用也有了很大的扩展,这为用户编写程序提供了更大的自由度,使编程更加简单、方便。
(6)图形功能强大
在很多程序语言中,绘制图形是一件很麻烦的事情。但在MATLAB中,只需调用相应的绘图函数即可,既方便又迅速。随着硬件的发展和MATLAB7.0推出,MATLAB的图形功能更好,可视化编程能力得到更进一步的提高。
(7)程序的兼容性好
MATLAB可以在各种PC机、大型计算机和各种操作系统上运行。
(8)源代码开放
MATLAB的最重要的特点是源代码的开放性,除了内部函数,所有的MATLAB核心文件和工具箱文件都完全开放,都可渎可改。用户对源文件修改就可以生成适合自己的源代码文件。
(9)形形色色的工具箱
凡有工具箱的软件大都分为两大部分,就是核心部分和形形色色的工具箱。MATLAB有数百个核心内部函数,数十个形形色色的工具箱。工具箱大致可以分为两大类,——类是学科性工具箱,另一类是功能性工具箱。学科性工具箱大都涵盖了本学科所有的已有的基本概念和基本运算,大都十分专业。如符号数学工具箱,简直就是一个高等数学、工程数学解题器。极限、导数、微分、积分、级数运算与展开、微分方程求解、Laplace变换等应有尽有。还有控制系统、信号处理、模糊逻辑、神经网络、小波分析、统计;优化、金融预测等工具箱,无一不是非常优秀的运算工具。这些工具箱都可以添加自己根据需要编写的函数,用户可以不断更新自己的工具箱,使之更适合于自己的研究和计算
2设计题目
Matlab运算与应用设计7
1.求[100,200]之间第一个能被21整除的整数。
2.绘制余弦曲线y=cos(x)和指数函数y=x^2曲线。
3.计算2+4+6...+100 的值,当和大于2000时终止计算。
4.分析下面每条指令的功能并运行,观察执行结果。
a) X=0:0.25:3;
Y=X.*exp(-X);
plot(X,Y),xlabel(‘x’), ylabel(‘y’),title(‘y=x*exp(-x)’);
- 4 -
武汉理工《Matlab应用课程设计》课程设计说明书
(2) A=zeros(2,5)
A(:)=-4:5
L=abs(A)>4
islogical(L)
X=A(L)
(3) A=[1:5;6:10]
pow2(A)
(4) A=zeros(3,2)
A(:)=1:6
A=A*(1+i)
A1=A.’;
B1=A’;
(5) A=ones(2,3)
B=ones(2)
C=eye(4)
D=diag(C)
E=repmat(C,1,3)
5 利用while?end循环结构编程求出1+3+5?+101的值。
6.随机生成一个10000×3的矩阵,并绘制其柱状图。
7. 利用switch?case编写以下程序:
某商场对顾客所购买的商品实行打折销售,标准如下(商品价格用price来表示):
price<200 无折扣
200?price<500 5%折扣
500?price<1000 10%折扣
Price?1000 15%折扣
输入所售商品的价格,求其实际销售价格。
8. 利用函数调用编写函数文件,求半径r分别为0.5与5时圆的面积与周长。
9.已知y?e-1cos(t),其中t的范围是[0 10],计算y的微分和积分并给出曲线图。
10. 编写程序,用plot(x,y)绘制下图所示曲线。
a) b)
- 5 -
武汉理工《Matlab应用课程设计》课程设计说明书
3 设计内容
3.1 求[100,200]之间第一个能被21整除的整数。
3.1.1分析:利用for循环语句控制,并结合rem函数求得个符合条件的数。
3.1.2程序编码:
>> for n=100:200 % 控制n从100开始以1为步长出个取值至200;
if rem(n,21)~=0 % 判断条件:整数对21取余不等于0
continue % 结束本次循环,开始下一次循环
end % i f语句结束标志
break % 跳出循环体执行下面的语句
end
>> n % 提示输出n
n =
105
3.1.3 程序流程图如(图3-1):
图3-1
3.1.4 实验结果进行分析和总结:
利用for语句逐个去值,然后通过if语对rem(n,21)~=0进行判断满足 条件时,循环继续。不满足时,结束循环。输出n的值为 105.
3.2 绘制余弦曲线y=cos(x)和指数函数y=x^2曲线。
3.2.1分析:在matlab中绘制函数图像有很多的函数可以完成。如:fplot 函
数plot函数等,不同的函数使用规则是有区别的,合理使用任何一个画图函数
得到预期的结果。
3.2.2程序编码:
>> y=@(x)cos(x);
- 6 -
武汉理工《Matlab应用课程设计》课程设计说明书
>> subplot(1,2,1),plot(y,[-pi,pi]);
>> y=@(x)x^2;
>> subplot(1,2,2),plot(y,[0,2])
3.2.3 函数图像如(图3-2)
图3-2
3.2.4 实验结果分析和总结:
利用@创建匿名函数,随机选择2个函数的自变量x的范围。利用subplot
函数将2个函数的图像在同一个窗口中不同的区域显示图像。
3.3 计算2+4+6...+100 的值,当和大于2000时终止计算。
3.3.1分析:利用for循环语句来的到累加的效果,并利用while语句控制和大于2000时终止计算。
3.3.2 程序编码:
>> y=0;
>> n=100;
>> for i=2:2:100
y=y+i;
if y>2000
break;
end
end
>> y
y =
2070
3.3.3 实验结果分析和总结:
利用for语句使i从2到100逐个取值,利用y=y+i语句实现累加,利用if y>2000 语句最终达到题目要求,求得y=2070。
3.4 分析下面每条指令的功能并运行,观察执行结果。
3.4.1 X=0:0.25:3;
Y=X.*exp(-X);
plot(X,Y),label(‘x’), label(‘y’),title(‘y=x*exp(-x)’); - 7 -
武汉理工《Matlab应用课程设计》课程设计说明书
3.4.1.1 分析:X=0:0.25:3;得到以0.25为步长,取得0到3内的所有实数,确
定自变量X的范围。利用plot函数画出函数Y的图像,并设置图像的一些基本性质。
3.4.1.2 程序编码
>> X=0:0.25:3;
>> Y=X.*exp(-X);
>> plot(X,Y),xlabel('x'), ylabel('y'),title('y=x*exp(-x)');
3.4.1.3 函数图像 如(图3-3)
图3-3
3.4.2 A=zeros(2,5)
A(:)=-4:5
L=abs(A)>4
islogical(L)
X=A(L)
3.4.2.1 分析:zeros函数建立一个3*5全0矩阵赋给A,在将-4到5内的整数赋给A,形成新的矩阵。L=abs(A)>4,获得新的矩阵L,通过逻辑函数islogical得到新的矩阵赋给X。
3.4.2.2 程序编码:
>> A=zeros(2,5)
A =
0 0 0 0 0
0 0 0 0 0
>> A(:)=-4:5
- 8 -
武汉理工《Matlab应用课程设计》课程设计说明书
A =
-4 -2 0 2 4
-3 -1 1 3 5
>> L=abs(A)>4
L =
0 0 0 0 0
0 0 0 0 1
>> islogical(L)
ans =
1
>> X=A(L)
X =
5
3.4.3 A=[1:5;6:10]
pow2(A)
3.4.3.1 分析:pow2函数的使用。
3.4.3.2 程序编码:
>> A=[1:5;6:10]
A =
1 2 3 4 5
6 7 8 9 10
>> pow2(A)
ans =
2 4 8 16 32
64 128 256 512 1024
3.4.4 A=zeros(3,2) A(:)=1:6 A=A*(1+i) A1=A.’; B1=A’;
3.4.4.1 分析:A=zeros(3,2) A(:)=1:6 获得一个新的矩阵,主要是区别‘’’ - 9 -
武汉理工《Matlab应用课程设计》课程设计说明书
‘.’’的用法。前者是求矩阵的共轭转置,后者实现非共轭转置。
3.4.4.2 程序编码:
>> A=zeros(3,2)
A =
0 0
0 0
0 0
>> A(:)=1:6
A =
1 4
2 5
3 6
>> A=A*(1+i)
A =
101 404
202 505
303 606
>> A1=A.';B1=A';
3.4.5 A=ones(2,3) B=ones(2) C=eye(4) D=drag(C) E=repeat(C,1,3)
3.4.5.1分析:ones函数以及eye,drag,repmat函数的使用。
3.4.5.2 程序编码:
>> A=ones(2,3)
A =
1 1 1
1 1 1
>> B=ones(2)
B =
1 1
1 1
>> C=eye(4)
C =
1 0 0 0
- 10 -
武汉理工《Matlab应用课程设计》课程设计说明书
0 1 0 0
0 0 1 0
0 0 0 1
>> D=diag(C)
D =
1
1
1
1
>> E=repmat(C,1,3)
E =
1 0 0 0 1 0 0 0 1 0 0 0
0 1 0 0 0 1 0 0 0 1 0 0
0 0 1 0 0 0 1 0 0 0 1 0
0 0 0 1 0 0 0 1 0 0 0 1
3.5 利用while…end循环结构编程求出1+3+5…+101的值。
3.5.1 分析:while语句
while语句的一般格式为:
while (条件)
循环体语句
end
其执行过程为:若条件成立,则执行循环体语句,执行后再判断条件是否成立,如果不成立则跳出循环。
3.5.2 程序编码:
>> sum=0;
>> i=1;
>> while i<=101
sum=sum+i;
i=i+2;
end
>> sum
sum =
- 11 -
武汉理工《Matlab应用课程设计》课程设计说明书
2601
3.5.3
图3-4
3.6 随机生成一个10000×3的矩阵,并绘制其柱状图。
3.6.1 分析:利用rand函数生成这个矩阵。
3.6.2 程序编码:
>> a=randn(10000,3);
>> bar(a)
3.6.3 函数图像 如(图3-5)
图3-5
3.7 利用switch…case编写以下程序:
- 12 -
武汉理工《Matlab应用课程设计》课程设计说明书
某商场对顾客所购买的商品实行打折销售,标准如下(商品价格用price来表示):
price<200 无折扣
200?price<500 5%折扣
500?price<1000 10%折扣
Price?1000 15%折扣
输入所售商品的价格,求其实际销售价格。
3.7.1 分析: switch语句根据表达式的取值不同,分别执行不同的语句,其语句格式为:
switch 表达式
case 表达式1
语句组1
case 表达式2
语句组2
??
case 表达式m
语句组m
otherwise
语句组n
end
当表达式的值等于表达式1的值时,执行语句组1,当表达式的值等于表达式2的值时,执行语句组2,?,当表达式的值等于表达式m的值时,执行语句组m,当表达式的值不等于case所列的表达式的值时,执行语句组n。当任意一个分支的语句执行完后,直接执行switch语句的下一句。
这个题需要建立mfile文件,来将进行求解。
3.7.2 M-file文件程序:
price=input('请输入商品价格');
switch fix(price/100)
case {0,1} %价格小于200
rate=0;
case {2,3,4} %价格大于等于200但小于500 rate=5/100;
case num2cell(5:9) %价格大于等于500但小于1000 rate=10/100;
otherwise %价格大于等于1000
rate=15/100;
end
price=price*(1-rate) %输出商品实际销售价格
运行可得到:
请输入商品价格900
price =
810
- 13 -
武汉理工《Matlab应用课程设计》课程设计说明书
3.7.3 程序流程图
当输入900, fix(price/100)得到为9,符合case num2cell(5:9)条件,则rate等于10%,price=900*(1-10%)=810 。
3.8 利用函数调用编写函数文件,求半径r分别为0.5与5时圆的面积与周长。
3.8.1 分析:在matlab中新建Function-M-file,建立一个函数,求得结果。
3.8.2 函数文件:
function [s l] = sl( r ) % 确定变量为 s,r,自变量为r;
s=pi*r^2; %求面积
l=2*pi*r; %求周长
s %显示面积
l %显示周长
end
3.8.3 程序代码:>> sl(0.5);
s =
0.7854
l =
3.1416
>> sl(5);
- 14 -
武汉理工《Matlab应用课程设计》课程设计说明书
s =
78.5398
l =
31.4159
-1y?ecos(t),其中t的范围是[0 3.9 已知10],计算y的微分和积分并给出曲线
图
3.9.1 分析:分别利用diff,以及int函数求的函数的微分和积分,利用ezplot画图函数得到函数的图像。注意此处e^(-1),用exp(-1)表示。
3.9.2 程序编码:
>> syms t y
>> y=exp(-1)*cos(t);
>> int(y,0,10)
ans =
(828390857088487*sin(10))/2251799813685248
>> pretty(ans)
828390857088487 sin(10)
-----------------------
2251799813685248
>> diff(y,0,10)
ans =
-(828390857088487*cos(t))/2251799813685248
>> pretty(a)
828390857088487 cos(t)
- ----------------------
2251799813685248
>> ezplot(y,[0,10])
3.9.3函数图像如(图3-6):
- 15 -
武汉理工《Matlab应用课程设计》课程设计说明书
图3-6
3.10 编写程序,用plot(x,y)绘制下图所示曲线。
3.10.1 分析:观察第一个函数图像可以得到函数解析式为,y=3*x+1,x的范围为:0=<x<=5.画图时,要标明x,y,坐标轴,x坐标最小单位是0.5,y轴最小单位是2. 观察第二个函数图像,由2条直线组成,y1=-x+1,y2=2*x.纵坐标最小单位为:0.2,且范围为[1,3],横坐标最小单位为0.1,范围为[0,1]。利用hold on语句在同一个坐标下画出2个函数的图像。
3.10.2程序编码:
>> x=0:0.001:5;
>> y=3*x+1;
>> plot(x,y),label('y'),label('x');
3.10.3 图像如下如(图3-7):
- 16 -
武汉理工《Matlab应用课程设计》课程设计说明书 图(3-7)
3.10.4程序编码:
>> x=0:0.1:1;
>> y1=-x+3;
>> y2=x+1;
>> plot(x,y1),xlabel('x'),ylabel('y');
>> hold on
>> plot(x,y2)
3.10.5 函数图像如(图3-8):
图3-8
- 17 -
武汉理工《Matlab应用课程设计》课程设计说明书 4 课程设计心得
5 参考文献
- 18 -
武汉理工《Matlab应用课程设计》课程设计说明书
[1] 谭浩强著.C程序设计(第二版).北京:清华大学出版社,1999
[2] 吴传生主编.经济数学.线性代数(第二版).北京高等教育出版社,2009
[3] 石博强 赵金编著.Matlab数学计算与工程分析范例教程 北京:中国铁道出版社
[4] 亨赛尔.精通matlab 7 .北京:清华大学出版社,2006
本科生课程设计成绩评定表
- 19 -
武汉理工《Matlab应用课程设计》课程设计说明书
指导教师签字:
年 月 日
- 20 -
武汉理工《Matlab应用课程设计》课程设计说明书
- 21 -