Matlab语言程序设计
matlab程序设计
matlab程序设计Matlab程序设计是一门计算机编程语言,广泛应用于科学、工程和其他领域的数据分析和模拟。
它提供了丰富的函数库和工具箱,可以帮助程序员进行数据处理、图像处理、信号处理、数值计算等任务。
本文将介绍Matlab程序设计的基本原理和一些常用的技巧,以帮助读者更好地理解和使用这个强大的工具。
Matlab程序设计的基础是编写脚本文件或函数文件。
脚本文件是一系列的Matlab命令,按照顺序执行。
函数文件是封装了一段特定功能的代码,可以在其他程序中调用。
编写Matlab脚本或函数需要遵循一定的语法规则,如使用变量、函数、循环和条件语句等。
在编写程序时,还需要注意代码的可读性和可维护性,以便其他人能够理解和修改代码。
Matlab程序设计最常用的功能之一是数据处理。
Matlab提供了丰富的函数和工具,可以方便地读取、处理和分析各种类型的数据。
例如,可以使用Matlab来读取和处理Excel文件、文本文件、图像文件等。
通过使用Matlab的矩阵操作和向量化计算,可以高效地进行大规模数据的处理和计算。
图像处理是Matlab程序设计中的另一个重要应用领域。
Matlab提供了许多图像处理函数和工具箱,可以实现图像的滤波、增强、分割、特征提取等操作。
通过编写Matlab程序,可以实现自定义的图像处理算法,满足不同应用的需求。
信号处理是Matlab程序设计的另一个重要领域。
Matlab提供了丰富的信号处理函数和工具箱,可以进行信号的滤波、降噪、频谱分析、波形合成等操作。
通过编写Matlab程序,可以实现自定义的信号处理算法,满足不同应用的需求。
数值计算是Matlab程序设计的核心功能之一。
Matlab提供了丰富的数值计算函数和工具箱,可以进行数值积分、微分方程求解、优化、线性代数计算等操作。
通过编写Matlab程序,可以实现复杂的数值计算算法,解决实际问题。
除了上述应用领域,Matlab还可以用于建模和仿真、控制系统设计、机器学习等。
MATLAB 程序语言设计课程教学改革与实践
2021年12期74MATLAB 程序语言设计课程教学改革与实践李莹琦,秦林林,刘利平,高佳慧(人工智能学院 华北理工大学,河北 唐山 063210)摘要:MATLAB 程序语言设计课程是计算机科学与技术、电子信息工程、通信工程等专业的核心课程,可用于数据分析、无线通信、信号处理以及数值计算等科学计算语言和编程环境。
本文分析了MATLAB 现状及现有教学的局限性,对该课程的教学结构、教学内容、考核机制和师生关系进行反向设计,并针对性提出了教学改进措施,构建新的授课模式,旨在提高该课程的教学质量,提高学生学习能力,培养学习兴趣,关注学生综合素质与实践能力,满足当下社会应用型人才的培养需求。
关键词:MATLAB 语言;教学模式;实例应用一、 引 言MATLAB 是工科类的基础课程,是一种高级技术计算机语言,可用于数值计算、数据分析、仿真等[1]。
其在工程中具有强大的计算能力,简单和效率高等特点。
正因为MATLAB 具有高效计算能力,所以在我国高校尤其工科院校中具有举足轻重的作用。
通过多次讲授MATLAB 基础课程发现:(1)该课程的教学内容偏理论性,忽视综合实践教学。
学生在实践过程中只编译有限简单的程序,缺乏项目化实践教学[2],学生不具备一定的逻辑思维能力和实践应用能力。
(2)该课程的授课方式一直沿用传统的说教模式,以教师为主导,学生处于被动的学习状态,缺乏学习兴趣,这给学生创新性和逻辑性的培养带来很大阻碍。
(3)学生科学计算能力的培养不到位,很多学生在课程结束后没有什么体会,只是单纯地认为MATLAB 是一个功能较多的计算器,这一定程度上反映了教学的缺陷。
(4)教学过程中存在教学内容滞后,未达到工程就业需求。
前沿的科学研究方向和成果不能及时补充,已有的知识点与实际工程需求脱节,不利于培养学生创新性思维,学生不知道该门课程对以后的学习工作有什么作用。
基于上述问题,现对MATLAB 课程提出创新改革,并给出案例分析。
matlab 程序设计
【例5.8】用try... catch... end结构来进行矩阵相乘运算. 例
% EX0508 try结构 n=4; a=magic(n); m=3; b=eye(3); try c=a*b catch c=a(1:m,1:m)*b end lasterr
5.2.6 流程控制语句
break, continue, return, pause, keyboard, input 1. break命令 命令 break命令可以使包含break的最内层的for或while 语句强制终止,立即跳出该结构,执行end后面的命令, break命令一般和if结构结合使用.
5.2.4 switch…case开关结构
语法: switch 开关表达式 case 表达式 表达式1 语句段1 语句段 case表达式2 case表达式2 表达式 语句段2 语句段 ... otherwise 语句段n 语句段 end
说明: (1) 将开关表达式依次与case后面的表达式进行比较,如 果表达式1不满足,则与下一个表达式2比较,如果都不 满足则执行otherwise后面的语句段n;一旦开关表达式 与某个表达式相等,则执行其后面的语句段. (2) 开关表达式只能是标量或字符串. (3) case后面的表达式可以是标量,字符串或元胞数组, 如果是元胞数组则将开关表达式与元胞数组的所有元素 进行比较,只要某个元素与开关表达式相等,就执行其 后的语句段.
(2) 将函数文件保存为"Ex0502.m". (3) 在MATLAB命令窗口输入以下命令,则会出现f的计算值 注意: 注意:M脚本文件和M函数文件的文件名及函数名的命名规 和绘制的曲线:f=Ex0502(0.3) 则与MATLAB变量的命名规则相同.
MATLAB语言程序设计基础
3.2 matlab语言基本运算及输入输出
3.2.5 输入与输出语句
input A=input(提示字符串)要求输
入矩阵
A=input(提示字符串,‘s’) 要求字符串eg:
n=input('how much')
n=input('ho第w23页m/共4u1页ch','s')
3.2 matlab语言基本运算及输入输出
关系运算和逻辑运
算
表3-6 关系运算和逻辑运算函数
函数 any all find
exist isnan
意义 逻辑条件任何一个
逻辑条件全部 寻找逻辑值的向量元素下 标
检查某变量是否存在 检查非数值量
函数 finite isempty isstr
strcmp
随机数元素矩阵 设三维绘图基底坐
第5页/共41页
单位矩阵
3.1.3构造多维数组
cat( ) a=cat(n,a1,a2,….) n:多维函数的维数 n=1:
cat(a1,a2,a3..)=[a1;a2;a3…] n=2:
cat(a1,a2,a3..)=[a1,a2,a3…] n=3: 图3-1示
重新定义维数
end 表示某一维末尾元素下标
2、复数矩阵: b=[1 2;3 4]+i*[5 6;7 8] b=[1+5i 2+6i;3+7i 4+8i]
第3页/共41页
3、空矩阵[]
0×0阶
与clear不同之处:clear删除变量
[]删除矩阵中的元素
A(:,[2,3])=[] 第2,3列元素删除
函数 abs angle sqrt real imag conj round fix
matlab语言程序设计
matlab语言程序设计
MATLAB(Matrix Laboratory)是一种高级的计算机程序语言
和环境,用于数字计算、数据可视化和算法开发。
MATLAB
使用矩阵和向量作为基本数据类型,并提供了丰富的数学和工程函数库。
MATLAB的程序设计可以通过脚本文件(.m文件)或函数文
件(函数名.m文件)来实现。
脚本文件是一系列按顺序执行
的MATLAB命令,可以用来实现简单的计算和数据处理。
函
数文件定义了一个或多个函数,可以接受输入参数,并返回计算结果。
MATLAB的语法类似于其他编程语言,包括变量定义、循环、条件判断等语句。
可以使用MATLAB内置函数来进行数学运算、矩阵操作、文件读写、图形绘制等操作。
此外,
MATLAB还支持用户自定义函数和脚本文件,并提供了丰富
的工具箱(Toolbox)来扩展其功能。
以下是一个示例的MATLAB程序,计算并绘制正弦函数的图像:
```matlab
x = 0:0.01:2*pi; % 定义x取值范围
y = sin(x); % 计算正弦函数值
plot(x, y); % 绘制图像
xlabel('x'); % 设置x轴标签
ylabel('y'); % 设置y轴标签
title('Sine Function'); % 设置图像标题
```
在MATLAB命令行窗口中运行上述代码,将生成一个正弦函数的图像,并显示在图形窗口中。
MATLAB广泛应用于科学、工程、金融和计算机图形学等领域,可以进行数据分析、信号处理、图像处理、控制系统设计等任务。
《Matlab语言》实验四
《Matlab语言》实验四实验四、Matlab的程序设计(一)实验目的1.掌握利用if语句实现选择结构的方法。
2.掌握利用witch语句实现多分支选择结构的方法。
3.掌握利用for 语句实现循环结构的方法。
4.掌握利用while语句实现循环结构的方法。
5.掌握Matlab函数的编写及调试方法。
(二)实验环境1.计算机2.MATLAB7.0集成环境(三)实验内容1、编写一个函数,计算下面函数的值,给出标量某的值,调用该函数后,返回y的值。
functiony=myfun1(某)in某,y(某)某,某6,某00某3某3选择一些数据测试你编写的函数。
function[y]=myfun1(某)if某<=0 y=in(某);eleif某>0&某<=3y=某;eleif某>3y=-某+6;End结果:>>某=5;>>[y]=myfun1(某)y=12、编写一个函数求向量某中元素的平均值、最大值、最小值、均方根值。
function[m_某,ma某_某,min_某,rm_某]=myfun2(某)方均根值(RootMeanSquare)的计算公式为:rm1NNi1某i2用下面数据测试你写的函数:function[m_某,ma某_某,min_某,rm_某]=myfun2(某)%求平均值um_某=um(某);%向量元素求和[m,n]=ize(某);%最好用n=length(某);m_某=um_某/n;%求最大值采用逐个比较方式if某(1)>某(2)ma某_某=某(1);ele ma某_某=某(2);endfork=3:nifma某_某elema某_某=ma某_某;%可省略endend%求最小值if某(1)min_某=某(2);endfork=3:nifmin_某>某(k)min_某=某(k);elemin_某=min_某;%可省略endend%求均方根值um_某2=0;fork=1:num_某2=um_某2+某(k).^2;rm_某=qrt(um_某2/n);endm_某;ma某_某;min_某;rm_某;%按照函数值行(1)某=in(0:0.01:6某pi)运行结果:>>某=in(0:0.01:6某pi);>>[m_某,ma某_某,min_某,rm_某]=myfun2(某)m_某=-1.1256e-007ma某_某=1.0000min_某=-1.0000rm_某=0.7071(2)某=rand(1,200),得到的某为200个(0,1)之间均匀分布的随机数。
第4章MATLAB程序设计
例 求一个值n,使n!最大但小于1050。 MATLAB程序如下: %初始化 r=1;k=1; 执行后结果如下: %做循环 The 41!Is while r<1e50 3.345253e+049 r=r*k; k=k+1; end k=k-1;r=r/k;k=k-1; % 输出结果 disp(['The',num2str(k),'!is',num2str(r)])
4.2.3 循环结构 for 循环:可完成指定次重复的循环,且在循环开 始之前,就知道代码重复的次数。
while 循环:while语句可完成不定次重复的循 环,与for语句不同,每次循环前要先判断条件 是否满足,再决定循环是否进行。
例 利用rand函数产生10个随机数,然后利用嵌套 for循环进行从小到大排序。
2 1.5 1 0.5 0 150 100 50
然后通过调用函数fun计算出z, 并利用mesh绘制出网格线。 编写的脚本文件如下: % 坐标系准备 x=[0:.02:2]; y=[-2:.02:0]; % 调用函数计算函数值 z=fun(x,y); % 绘图 figure mesh(z)
150 100 50
4.3.2 函数的调用 函数调用的一般格式如下: [输出实参表] = 函数名(输入实参表) 要注意的是,函数调用时各实参出现的顺 序、个数,应与函数定义时形参的顺序、 个数一致,否则会出错。函数调用时,先 将实参传递给相应的形参,从而实现参数 传递,然后再执行函数的功能。
例 对于函数
z ( x 1)2 ( y 1)2
fprintf函数中,format字符中常常会使用到一些特 殊字符来灵活的实现一些显示功能 format string 结果 %d %e %f %g 把值作为整数来处理 用科学记数法来显示数据 用于格式化浮点数,并显示这个 数 用科学记数格式,或浮点数格式, 根据那个表示的数位短,显示那 个 转到新的一行
第七章 MATLAB程序设计
1、输入程序: %对两个矩阵相 加 clc clear a=[1,2,3]; b=[4,5,6]; c=a+b
3、在命令窗口输入 myadd,回车 或打开文件,点击运 行按钮 给出结果: c=
5
7
9
18
打开已有的M文件,也有3种方法: (1) 菜单操作。从MATLAB主窗口的File菜单 中选择Open命令,则屏幕出现Open对话框, 在Open对话框中选中所需打开的M文件。在 文档窗口可以对打开的M文件进行编辑修改, 编辑完成后,将M文件存盘。 (2) 命令操作。在MATLAB命令窗口输入命令: edit 文件名,则打开指定的M文件。 (3) 命令按钮操作。单击MATLAB主窗口工具 栏上的Open File命令按钮,再从弹出的对话 框中选择所需打开的M文件。
直接访问work space 通过函数形参传递数据 中所有变量 直接选取MATLAB中 精心设计完成指定功能 执行的语句 重复操作 MATLAB功能扩展
7
1.3 M文件的创建
m文件的类型是普通的文本文件,我们可以使用 系统认可的文本文件编辑器来建立m文件。如 MATLAB下的m文件编辑器、windows的记事 本和word等。
s=pi*r*r; p=2*pi*r;
24
特定规则:
1.函数m文件第一行必须以单词function作为引导词,表示该M文件是一 个函数文件,必须遵循如下形式: function <因变量>=<函数名>(<自变量>)
2.函数名的命名规则与变量名相同,m文件的文件名必须是 <函数名> .m。 3.输入形参为函数的输入参数,输出形参为函数的输出参数。当输出形 参多于一个时,则应该用方括号括起来。 4.程序中的变量均为局部变量,不保存在工作空间中。其变量只在函数 运行期间有效。
MATLAB程序设计基础教程
MATLAB程序设计基础教程MATLAB程序设计是一门广泛应用于科学和工程领域的高级编程语言。
它具有强大的数值计算和数据可视化功能,被广泛用于数据分析、模拟建模、信号处理等领域。
本文将介绍MATLAB程序设计的基础知识和常用技巧,帮助读者快速上手并掌握该编程语言。
一、MATLAB环境搭建在开始MATLAB编程之前,首先需要正确搭建MATLAB运行环境。
你可以从MathWorks官网下载和安装最新版本的MATLAB软件,根据安装向导进行配置。
安装完成后,你就可以打开MATLAB并开始编写代码了。
二、MATLAB基本语法1. 变量和数据类型在MATLAB中,可以使用变量来存储数据。
变量的命名需要满足一定规则,比如变量名只能包含字母、数字和下划线,不能以数字开头等。
MATLAB支持不同的数据类型,包括数字、字符串、逻辑值等。
2. 数组和矩阵MATLAB中的核心数据结构是数组和矩阵。
你可以使用一维或多维数组来存储和处理数据。
MATLAB提供了丰富的数组操作函数和运算符,可以进行元素访问、切片、矩阵运算等。
3. 控制流程MATLAB支持常用的控制流程语句,如条件语句(if-else)、循环语句(for、while)等。
这些语句可以帮助你根据不同的条件执行不同的代码块,或者重复执行一段代码。
三、MATLAB函数和脚本1. 函数MATLAB中可以编写自定义函数,以方便地实现特定功能。
函数是由输入参数和输出参数组成的可重复使用的代码块。
你可以在函数中进行各种操作,如计算、输出、图形绘制等。
2. 脚本除了函数,你还可以编写脚本文件来执行一系列MATLAB命令。
脚本文件通常用于较短的代码片段,不需要提供输入和输出参数。
你可以通过运行脚本文件一次性执行其中的命令。
四、MATLAB图形界面MATLAB提供了强大的图形界面(GUI)工具,用于可视化数据和交互式操作。
你可以通过GUI工具箱创建和定制各种图形,如散点图、曲线图、柱状图等。
第2章 MATLAB语言程序设计实例解析
【例2-6】switch语句实例 (原题见书本【例2-40】)。
• • • • • • • • • • • • • • • • • 解:首先我们要提取出开关表达式,这里若直接选用price作为开关表达式,则表达式i 则不好表示,因为price的取值理论上是无穷的,考虑到将price化为整数,这样图2-9中 的表达式i也就不难表示了。下面给出具体的程序: price=input('请输入商品价格:'); switch fix(price) case num2cell(0:199) % 价格小于200 rate=0; case num2cell(200:499) % 价格大于等于200但小于500 rate=3/100; case num2cell(500:999) % 价格大于等于500但小于1000 rate=5/100; case num2cell(1000:2499) % 价格大于等于1000但小于2500 rate=8/100; case num2cell(2500:4999) % 价格大于等于2500但小于5000 rate=10/100; otherwise % 价格大于等于5000 运行结果: rate=14/100; 请输入商品价格:1225 end sale_price =1127 sale_price=price*(1-rate) % 输出商品实际销售价格
【例2-1】隐函数的求导。
• 对于隐函数求偏导问题时,diff()函数并不能直接用于求解。考虑到隐 函数偏导数求解的一般方法:假设隐函数的数学表达式为
f ( x1 , x2 ,L , xn ) = 0
• 则可以通过隐函数求出自变量之间的偏导数。具体可以用下面的公式
∂xi • 求出 : ∂x j
∂ f ( x1 , x2 ,L , xn ) ∂x ∂xi =− j ∂ ∂x j f ( x1 , x2 ,L , xn ) ∂xi
MATLAB程序设计第一讲
• 2.lookfor命令 help命令只搜索出那些关键字完全匹配的结 果,lookfor命令对搜索范围内的M文件进 行关键字搜索,条件比较宽松。 lookfor命令只对M文件的第一行进行关键 字搜索。若在lookfor命令加上-all选项,则 可对M文件进行全文搜索。
2.绘图功能 MATLAB提供了两个层次的绘图操作:一 种是对图形句柄进行的低层绘图操作,另 一种是建立在低层绘图操作之上的高层绘 图操作。 利用MATLAB的高级图形命令可以轻而易 举地绘制二维、三维乃至四维图形,并可 进行图形和坐标的标识、视角和光照设计、 色彩精细控制等等。
3.编程语言 MATLAB具有程序结构控制、函数调用、 数据结构、输入输出、面向对象等程序语 言特征,而且简单易学、编程效率高。 4.MATLAB工具箱 MATLAB包含两部分内容:基本部分和各 种可选的工具箱。 MATLAB工具箱分为两大类:功能性工具 箱和学科性工具箱。
1.5 变量和数据操作
1.5.1 变量与赋值 1.变量命名规则 (i).变量名必须是以字母开头,后可接字 母、数字或下划线; (ii). 变量名最多不超过63个字符; (iii).变量名严格区分字母的大小写。
2.赋值语句 (1) 变量=表达式 (2) 表达式 其中表达式是用运算符将有关运算量连接 起来的式子,其结果可以是一个数值,也 可以是一个矩阵。 • MATLAB书写表达式的规则与“手写算式” 差不多相同。 • 如果一个指令过长可以在结尾加上...(代表 此行指 令与下一行连续)。
MATLAB程序设计语言
第二章MATLAB程序设计语言§2.1 MATLAB6.1的启动一、MATLAB启动MATLAB启动有两种方法:(1)MATLAB6.1的图标快捷启动方式(2)菜单启动方式§2.2 MATLAB环境一、MATLAB的命令窗口1、命令窗口的命令菜单2、命令窗口的工具栏3、命令窗口的命令编辑区↑:光标移到上一行↓:光标移到下一行←:光标回移一个字符→:光标向右移一个字符Ctrl→:向右移一个单词Ctrl←:向左移一个单词Backspace:删除光标前字符Delete:删除光标后字符End:光标移到行尾Home:光标移到行首Esc:删除一行注:1)在MATLAB的命令窗口里,在语句行尾加上3个英文句号表示续行;2)运算符“=”、“+”、“-”前后的空格不影响计算结果;3)在输入命令后以分号结束,则不会显示命令执行结果,但可以使程序运行的速度大大提高,这对输出数据的程序特别有用。
二、MATLAB的工作空间三、MATLAB的程序编辑器四、MATLAB的work子目录五、MATLAB运行外部程序§2.3 MATLAB数值运算基础MATLAB是一个高级的数学分析与运算软件,正如其名(矩阵实验室),它非常适用于矩阵的分析与运算。
MATLAB数值运算的表达式变量中不允许有未定义的自由变量,MATLAB 的数值运算主要是指数组的运算与矩阵的运算。
不需要事先定义,MATLAB系统定义的数值元素是复数,这是MATLAB区别其他高级语言的最大特点之一,它给诸多领域的数值计算带来极大的方便。
一、常量与变量1、常量MATLAB中使用的数据有常量和变量。
常量有实数常量与复数常量两类。
复数由实部与虚部组成。
常量可以使用传统的十进制计数法表示,也可以使用科学技术法来表示。
在MATLAB中,虚数单位i=sqrt(-1),在工作空间内显示的值为i=ans=0+1.000i复数常量的生成可以利用如下语句:Z=a+bi 或Z=r+exp(θ*i) ,其中r是复数的模,θ是复数幅角的弧度数2、变量MATLAB里的变量无需事先定义。
实验三MATLAB的程序设计
end
ifk==0
Y=1;
elseifk==1&&n==1
Y=1;
elseifk<=n
Y=(n/k)*c(k-1,n-1);
end
程序测试:
>> c(0,0)
ans =
1
>> c(0,1)
ans =
1
>> c(3,4)
ans =
4
7,计算以下和式,并估计其求和公式以及验证:
functionY=s(n)
Y=0;
fork=1:n
Y=Y+k;
end
测试:
>> s(3)
ans =
6
functionY=s(n)
Y=0;
fork=1:n
Y=Y+k^2;
end
测试:
>> s(3)
ans =
14
functionY=s(n)
Y=0;
fork=1:n
Y=Y+k^3;
end
测试:
>> s(2)
4
>> Joseph0(7,4)
2
11,求出 之间的所有素数;
M函数文件:
functionout = nprimes(N)
A= [1:N];
A(1)=0;
i=2;
whilei<= floor(sqrt(N));
forj= 2:fix(N/i)
A(i*j) = 0;
end;
i = A(find(A>i,1));
第6章 MATLAB程序设计
如果用户调用toc时不指定输出参数t, 例如: >> tic >> toc elapsed_time = 4.0160 函数在命令窗口显示函数工作空间变量 elapsed_time 的值,但在MATLAB命令工作空间里不给输出参数t赋任 何值,也不创建变量t。
如果如果用户调用toc时指定输出参数t,例如: >> tic >> out=toc out = 2.8140 则以变量out的形式返回到命令窗口,并在 MATLAB命令工作空间里创建变量out。
function y = linspace(d1, d2, n) %LINSPACE Linearly spaced vector. if nargin == 2 n = 100; end n = double(n); y = [d1+(0:n-2)*(d2d1)/(floor(n)-1) d2];
function t=toc % TOC Read the stopwatch timer.
Global TICTOC If nargout<1 elapsed_time=etime(clock,TICTO C) else t=etime(clock,TICTOC); end
(8)全局变量可以为编程带来某些方便,但却破坏了函 数对变量的封装,所以在实际编程中,无论什么时候都应 尽量避免使用全局变量。如果一定要用全局变量,建议全 局变量名要长、采用大写字母,并有选择地以首次出现的 M文件的名字开头,使全局变量之间不必要的互作用减至 最小。 (9)MATLAB以搜寻脚本文件的同样方式搜寻函数文件。 例如,输入>>cow,MATLAB首先认为cow是一个变 量;如果它不是,那么MATLAB认为它是一个内置函数; 如果还不是,MATLAB检查当前cow.m的目录或文件夹; 如果仍然不是,MATLAB就检查cow.m在MATLAB搜 寻路径上的所有目录或文件夹。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
MATLAB 语言程序设计1、应用题(20 分)某工厂生产A和B两种产品,它们需要经过三种设备的加工,工时如表1所列。
设备一、二、三每天可使用的时间分别不超过12、10和8小时。
产品A和B的利润随市场的需求有所波动,如果预测未来某个时期内A和B的利润分别为4000元/吨和3000元/吨,问每天应安排产品A、B各多少吨,才能使工厂获利最大?表 1 生产产品工时表产品设备一设备二设备三A/(小时/吨) 3 3 4B/(小时/吨) 4 3 2设备每天最多可工作时数/小时12 10 8请写出具体解决方案,并编写该解决方案的具体MATLAB程序代码。
假设每天应安排生产产品A和B分别为和吨,依题意可建数学模型如下:max z=4000x1+ 3000x23x1+ 4x2≤123x1+ 3x2≤104x1+ 2x2≤8x1≥0, x2≥0首先将目标函数转换为标准形式:min z=-4000-3000M文件如下:f = [-4000;-3000];A = [3 4;3 3;4 2];b = [12;10;8];lb = zeros(2,1);[x,fval] = linprog(f,A,b,[],[],lb)结果如下图1所示:图12、结合MATLAB 图像的读写知识,请你写出具体MATLAB 图像读写方法,结合实例,给出图像读写步骤。
(20分)读写方法:imfinfo(FileNAme) %从FileNAme中获取或显示图像文件的特征数据[X,cmap]=imread(FileNAme) %读取变址图像的数据矩阵与伴随色图,并分别送给X 和cmapX=imread(FileNAme) %从FileNAme中读取强度图像或真彩图像的数据矩阵并送给X imwrite(X,cmap,FileName,Parameter,Value) %将变址图像写入文件imwrite(X ,FileName,Parameter,Value)%将强度图像或真彩图像写入文件[例2-1]M文件如下:I=imread('m2.png');imwrite(I,'m2.tif');[X,cmap]=imread('m2.tif');image(X);colormap(cmap);axis image off;结果如下图2所示:图23、结合课本第四章所提供的18种绘图方法,请实现其中8种绘图,提供程序代码及所绘制的图形。
(30分)(1)面域图面域图特别适合表达一个数据在总数中占据的比例。
[例3-1]某公司1998年-2002年的销售额、成本、利润如下表1所示,试用面域图表达之。
表1 某公司1998年-2002年的销售额、成本、利润一览表(单位:万元)M文件如下:sales=[520.8 824.9 931.7 920.8 901.8]; expence=[190.5 367.9 450.3 403.2 397.5]; x=1998:2002;area(x,sales,'FaceColor',[0.5 0.5 0.9],'EdgeColor','b','LineWidth',5); hold on;area(x,expence,'FaceColor',[0.5 0.9 0.5],'EdgeColor','b','LineWidth',3);hold off;set(gca,'XTick',[1998:2002]); set(gca,'Layer','top'); gtext('\leftarrow 销售额'); gtext('成本'); gtext('利润');xlabel('年份','FontSize',18);ylabel('利润=销售额-成本','FontSize',18);结果如下图3所示,用鼠标选择合适的位置后,文字会自动标注:图3(2)饼图饼图便于比较各个元素在一个整体中的比例。
年份利润=销售额-成本1998199920002001200201002003004005006007008009001000[例3-2]某年级学生成绩为:优秀12人,良好87人,中等75人,及格64人,不及格20人。
试利用饼图予以表达和分析。
M文件如下所示:X=[21 87 75 64 20];subplot(2,2,1);pie(X,[1 0 0 0 0]);legend({'优秀','良好','中等','及格','不及格'});subplot(2,2,2); pie(X,[0 0 0 0 1]); subplot(2,2,3);pie3(X,[1 0 0 0 0]); subplot(2,2,4);pie3(X,[0 0 0 0 1]);饼图如下图4所示:图4(3)火柴杆图火柴杆图把图中每个数据点画成一根曲线,且数据点处用圆圈表示,看起来很像火柴杆。
[例3-3]横坐标在0~2π之间均匀生成30个点,用不同颜色绘制a=sin(x),b=cos(x)以及(a+b)的图形,其中(a+b)用火柴杆图绘制。
M文件如下:x=linspace(0,2*pi,30);a=sin(x);b=cos(x);plot_handle=plot(x,a,'-r',x,b,'-g'); hold on;stem_handle=stem(x,a+b); hold off;28%28%legend_handle=[plot_handle;stem_handl e];legend(legend_handle,'a=sin(x)','b=cos(x )','a+b'); xlabel('时间(单位:秒)'); ylabel('幅值'); title('a,b,a+b');结果如下图5所示:图5(4)阶梯图所谓阶梯图是指相邻两点之间的区间的所有值均为两点中起点的值,两点间应用阶梯线连接。
阶梯图主要用于表达数字系统的时程曲线等。
[例3-4]绘制区间[0,2π] 内sin(x)的阶梯图,步长取0.25。
M 文件如下:x=0:0.25:2*pi; y=sin(x);stairs(x,y,'-b'); %绘制阶梯图 xlabel('sin(x)阶梯图'); hold on;plot(x,y,'-r'); %绘制曲线 hold off; 结果如下图6所示:01234567时间(单位:秒)幅值a,b,a+b01234567sin(x)阶梯图图6(5)误差图误差图适于表现数据可信度或者相对于标准的偏离程度。
[例3-5]假设误差函数为5/length(x),区间[0,1],试绘制函数sin(x)在区间[0,10]内的误差图。
M文件如下:x=[0:0.5:10];y=10+x.^2;e=5*[0:1/(length(x)-1):1];errorbar(y,e);结果如下图7所示:图7(6)voronoi(沃若尼)图所谓voronoi图是指用voronoi多边形勾画每个点的最近邻范围。
[例3-6]voronoi图实例M文件如下:n=30;A=rand(n,1)-0.5;B=rand(n,1)-0.5;voronoi(A,B);结果如下图8所示:图8(7)“二维半”图所谓“二维半”图是指在二维图形中增加色彩,以区分不同特征,也称伪彩图。
[例3-7]绘制peaks函数的“二维半”图。
M文件如下:[X,Y,Z]=peaks(30); n=3;subplot(1,2,1); pcolor(X,Y,Z); colormap summer; shading interp; hold on;subplot(1,2,2); C=contour(X,Y,Z,n,'k:'); clabel(C);zmax=max(max(Z));zmin=min(min(Z));caxis([zmin,zmax]); colorbar;hold off;结果如下图9所示:图9(8)泛涵图MATLAB 提供函数fplot 用来绘制泛涵图。
该函数具有数据点自适应产生功能,在函数剧烈变化出,自动加密数据点,反之,则减少。
[例3-8]分别用泛涵图和通常的采样图绘制函数y=cos(tan(πx)),并加以比较。
M 文件如下:y=cos(tan(pi*x));n=length(x); %测算数据点,为图形对比做准备 subplot(1,2,1);fplot('cos(tan(pi*x))',[-0.4,1.4],2e-3); %用fplot 绘制泛涵图 xlabel('泛涵图效果');t=(-0.4:5/n:1.4)'; %等分采样 subplot(1,2,2);plot(t,cos(tan(pi*t))); %通常的绘图效果 xlabel('采样图效果'); 结果如下图10所示:-202-3-2-101230.795-22-6-4-2246图104、请在下列 21 个函数中,任意挑选 3 个函数进行 MATLAB 三维作图。
要求:①要给出每个函数作图的原始 MATLAB 程序及最终所绘的图;②任何两同学不得在函数选择上、作图原程序以及最后所绘的图完全一样。
(30 分)(1)F1: f (x , y )=100(x 2− y )2+ (1 −x )2 , − 2.048 <x , y < 2.048 M 文件如下:x=-2.048:0.5:2.048; y=x;[X,Y]=meshgrid(x,y);Z=100*(X.^2-Y).^2+(1-X).^2 ; mesh(Z);colormap pink; hidden off;结果如下图11所示:图11(2)F4:f (x , y ) = (4− 2.1x 2+ xy +(−4+4y 2)y 2,−3≤x ≤3,−2≤y ≤2M 文件如下:-1-0.8-0.6-0.4-0.200.20.40.60.81泛涵图效果采样图效果10x=-2:0.5:2;y=-2:0.5:2;[X,Y]=meshgrid(x,y);Z=(4-2.1*X.^2+X.^4/3)*X.^2+X*Y+(-4+4*Y.^2)*Y.^2;mesh(Z);colormap pink;hidden off;结果如下图12所示:图12(3)F8:f(x,y)=peaks(x,y) x=acosucosvM文件如下:x=-2:0.1:2;y=-2:0.1:2;[X,Y]=meshgrid(x,y);Z=peaks(X,Y);surf(X,Y,Z);结果如下图13所示:图13。