实验六 M函数文件编程
- 格式:pdf
- 大小:83.76 KB
- 文档页数:2
m⽂件程序设计⼀、实验⽬的1. 通过练习理解matlab编程⽅法;2. 掌握分⽀结构程序设计思路;3. 掌握循环结构程序设计思路。
⼆、实验环境1. 计算机2. matlab7.x三、实验说明1. 熟悉matlab7.x运⾏环境,正确操作,认真观察;2. 实验学时:2学时;3. 学会使⽤help;4. 编写程序前先写出程序的流程图框架;5. ⾃主编写调试程序直到正确为⽌,必要时参考相关资料,;6. 保存整理实验结果,提交实验报告。
四、实验内容1. 输⼊⼀个百分制成绩,要求输出成绩等级为:A、B、C、D、E,其中90-100为A;80-89为B;70-79为C;60-69为D;60以下为E1)⽤if或switch语句实现;2)输⼊百分制成绩后要判断成绩的合理性,对不合理的成绩要输出出错信息提⽰,⽐如:输⼊成绩不能⼤于100。
3)程序保存名为sy3加上本⼈学号2.某公司员⼯的⼯资计算⽅法如下:(1)⼯作时数超过120⼩时者,超过部分加发15%;(2)⼯作时数低于60⼩时者,扣发700元;(3)其余按每⼩时84元计发。
编程按输⼊的⼯号和该员⼯的⼯时数,计算应发⼯资。
3. 根据求的近似值。
当n分别取100、1000、10000时,结果是多少?要求:分别⽤循环结构和向量运算(使⽤sum函数)来实现。
五、实验程序及结果1、程序:m=input('请输⼊⼀个数值:');n=floor(m/10);switch ncase 9disp('A');case 8disp('B');case 7disp('C');case 6disp('D');case {1,2,3,4,5}disp('E');otherwisedisp('输⼊错误!');end2、程序:x=input('请输⼊⼯号:');y=input('请输⼊⼯作时:');if y>120a=84*120+(y-120)*84*0.15;disp(['本⽉⼯资为:',num2str(a)]); elseif y<60b=84*y-700;disp(['本⽉⼯资为:',num2str(b)]); elsec=84*y;disp(['本⽉⼯资为:',num2str(c)]); end3、程序:y=0;n=input('输⼊⼀个数:');for i=1:ny=y+1/i/i;enda=sqrt(6*y);disp(['圆周率近似值为:',num2str(a)]);。
MATLAB基础实验指导书漳州师范学院物电系2010年10月目录实验一MATLAB环境的熟悉与基本运算 (2)实验二MATLAB数值运算 (8)实验三MATLAB语言的程序设计 (12)实验四MATLAB的图形绘制 (16)实验五采用SIMULINK的系统仿真 (20)实验六MATLAB在电路中的应用 (25)实验七MATLAB在信号与系统中的应用 (27)实验八MATLAB在控制理论中的应用 (29)实验一 MATLAB环境的熟悉与基本运算一、实验目的:1.熟悉MATLAB开发环境2.掌握矩阵、变量、表达式的各种基本运算二、实验基本知识:1.熟悉MATLAB环境:MATLAB桌面和命令窗口、命令历史窗口、帮助信息浏览器、工作空间浏览器文件和搜索路径浏览器。
2.掌握MATLAB常用命令3.MATLAB变量与运算符变量命名规则如下:(1)变量名可以由英语字母、数字和下划线组成(2)变量名应以英文字母开头(3)长度不大于31个(4)区分大小写MATLAB中设置了一些特殊的变量与常量,列于下表。
MATLAB运算符,通过下面几个表来说明MATLAB的各种常用运算符表2 MATLAB算术运算符表3 MATLAB关系运算符表4 MATLAB逻辑运算符表5 MATLAB特殊运算4.MATLAB的一维、二维数组的寻访表6 子数组访问与赋值常用的相关指令格式5.MATLAB的基本运算表7 两种运算指令形式和实质内涵的异同表6.MATLAB的常用函数表8 标准数组生成函数表9 数组操作函数三、实验内容1、学习使用help命令,例如在命令窗口输入help eye,然后根据帮助说明,学习使用指令eye(其它不会用的指令,依照此方法类推)2、学习使用clc、clear,观察command window、command history和workspace等窗口的变化结果。
3、初步程序的编写练习,新建M-file,保存(自己设定文件名,例如exerc1、exerc2、exerc3……),学习使用MATLAB的基本运算符、数组寻访指令、标准数组生成函数和数组操作函数。
MATLAB全部实验及答案MATLAB全部实验及答案实验一、MATLAB基本操作实验内容及步骤4、有关向量、矩阵或数组的一些运算(1)设A=15;B=20;求C=A+B与c=a+b?(2)设A=[1 2 3;4 5 6;7 8 9],B=[9 8 7;6 5 4;3 2 1];求A*B 与A.*B?A*B就是线代里面的矩阵相乘A.*B是对应位置的元素相乘(3)设a=10,b=20;求i=a/b=0.5与j=a\b=2?(4)设a=[1 -2 3;4 5 -4;5 -6 7]请设计出程序,分别找出小于0的矩阵元素及其位置(单下标、全下标的形式),并将其单下标转换成全下标。
clear,clca=[1 -2 3;4 5 -4;5 -6 7];[x,y]=find(a<0);c=[];for i=1:length(x)c(i,1)=a(x(i),y(i));c(i,2)=x(i);c(i,3)=y(i);c(i,4)=(y(i)-1)*size(a,2)+x(i);endc(5)在MATLAB命令行窗口运行A=[1,2;3,4]+i*[5,6;7,8];看结果如何?如果改成运行A=[1,2;3,4]+i[5,6;7,8],结果又如何?前面那个是虚数矩阵,后面那个出错(6)请写出完成下列计算的指令:a=[1 2 3;3 4 2;5 2 3],求a^2=?,a.^2=?a^2= 22 16 1625 26 2326 24 28a.^2=1 4 99 16 425 4 9(7)有一段指令如下,请思考并说明运行结果及其原因clearX=[1 2;8 9;3 6];X( : ) 转化为列向量(8)使用三元组方法,创建下列稀疏矩阵2 0 8 00 0 0 10 4 0 06 0 0 0方法一:clear,clcdata=[2 8 1 4 6];ir=[1 1 2 3 4 ];jc=[1 3 4 2 1];s=sparse(ir,jc,data,4,4);full(s)方法二:不用三元组法clear,clca=zeros(4,4);a(1,[1,3])=[2,8];a(2,4)=1;a(3,2)=4;a(4,1)=6;a(9)写出下列指令的运行结果>> A = [ 1 2 3 ]; B = [ 4 5 6 ];>> C = 3.^A>> D = A.^B5、已知+?=-334sin 234πt e y t 若需要计算t ∈[-1,1],取间隔为0.01,试计算出相对应的y 值。
班级:通信班姓名:彭羊平学号: 222008315222033实验一:matlab的基本操作一、实验目的:1、了解MATLAB的集成环境,熟悉其基本操作。
2、了解MATLAB的基础知识,包括矩阵的建立、简单操作、逻辑操作和关系运算。
3、熟悉基本的数学函数和逻辑函数。
4、在命令窗口输入命令完成一些简单的功能,为MATLAB程序设计奠定基础。
二、实验内容:1、利用diag等函数产生下列矩阵:然后利用reshape函数将它们变换成行向量。
2、利用rand函数产生(0,1)间均匀分布的10*10随机矩阵A,然后统计A中大于等于0.6的元素的个数。
3、有一矩阵A,找出矩阵中值大于1的元素,并将它们重新排列成列向量B。
4、在一测量矩阵A(6*6),存在有奇异值(假设大于100的值为奇异值),编程实现删去奇异值所在的行。
三、实验结果:1、程序如下:a=fliplr(diag([8,-7,2])+diag([5,3],-1))a=reshape(a,1,9)b=diag([2,5,8])+diag([4],2)+diag([7],-2) b=reshape(b,1,9)结果如下:2、程序如下:A=rand(10)A=A>0.6sum(sum(A))结果如下:3、程序如下:A=fix(5*rand(5))a=A>1;K=find(a);for k=1:length(K)B(k)=A(K(k));endB=B'结果如下:4、程序如下:A=fix(100*rand(8))+5 B=A>100;k=find(any(B'))A(k,:)=0结果如下:班级:通信班姓名:彭羊平学号: 222008315222033实验二: matlab绘图(1)一、实验目的:1、了解MATLAB图形系统和各种图形函数。
2、熟悉MATLAB的基本图形操作,具备MATLAB画图能力。
3、熟悉各种数学函数,并通过图形函数画出。
matlab编写M文件(函数)matlab的命令编辑窗口(Command Window)界面主要是用来调用系统命令、调用自定义函数(m文件里定义的函数)或编写一些较小的代码。
在遇到需要用到比较多的代码才能摆平的需求时,在命令编辑窗口每一行都有提示输入符号,用起来不是很方便(如前所述而且命令编辑窗口主要是用来调用命令之用),此时我们不得不求助于matlab的m文件来编写代码。
所以,记录一下经自行探索其编写方式后的入门过程:版本:MATLAB 7.9.0(R2009b)1.新建m文件打开matlab软件-->file-->new-->Function m-file经过此步骤之后,matlab会弹出一个新的编辑窗口,并生成少许代码如下:[plain]view plaincopyprint?1.function [ output_args ] = Untitled( input_args )2.%UNTITLED Summary of this function goes here3.% Detailed explanation goes here4.5.6.7.8.end这些代码是一个m-函数的模板。
function:表示编写的是一个函数。
output_args: 表示编写此函数的返回值(不同于C语言的是需要被返回的值无需使用return语句,只要将outp_args相应的参数拿到代码中赋值即可,同一般变量的使用),各返回值间用逗号隔开。
input_args: 此函数的输入参数,各参数之间用逗号隔开。
Untitled: 这是您所编写函数时所定义的函数名。
注意:函数名和m文件名需要保持一致。
如刚所创建的m文件在工作空间时命名为“RungeKuttaCalculate.m”则相应的函数名也需要为“RungeKuttaCalculate”,否则会引起报错。
%: 是matlab的注释语句的注释符,相当于C语言中的行注释符"//",在这里你可以描述此函数的功能,参数含义和返回值含义,使其含义更加明确。
实验六 M函数文件编程1、 实验目的1、掌握M语言程序设计的方法2、掌握函数文件的编写方法2、掌握用户参数交互输入设计技术2、 主要仪器及耗材计算机,MATLAB7.0。
3、 实验内容和步骤1、给定三个边长,看看他们是否能够组成一个三角形。
要求:编写M函数,输入参数为三个边长,而输出则为字符串,说明给定的边长是否能够组成三角形,若可能,进一步指出是否为等腰三角形或者是等边三角形。
对输入的错误数据格式(如字符串等)能够给出错误提示。
2、费波纳切数列:1、1、2、3、5、8、13……,其递推公式为:a(1)=a(2)=1,a(n)=a(n-1)+a(n-2)(n>=3)。
编程实现求n项的费波纳切数列。
要求:用M语言函数实现;对输入的错误数据格式(如字符串、小数等)能够给出错误提示。
3编写M脚本文件,输出9×9乘法表。
显示如下。
1×1= 11×2= 2 2×2= 41×3= 3 2×3= 6 3×3= 91×4= 4 2×4= 8 3×4=12 4×4=161×5= 5 2×5=10 3×5=15 4×5=20 5×5=251×6= 6 2×6=12 3×6=18 4×6=24 5×6=30 6×6=361×7= 7 2×7=14 3×7=21 4×7=28 5×7=35 6×7=42 7×7=491×8= 8 2×8=16 3×8=24 4×8=32 5×8=40 6×8=48 7×8=56 8×8=641×9= 9 2×9=18 3×9=27 4×9=36 5×9=45 6×9=54 7×9=63 8×9=72 9×9=81参考程序:for i=1:9;A=[];for j=1:i;A=[A,sprintf('%d×%d=%2d ',j,i,i*j)];enddisp(A)end4、编写一个randm函数,能够产生在[-m,m]之间的随机数。
西华大学实验报告(理工类)开课学院及实验室: 实验时间 : 年 月 日一、实验目的1、熟悉和掌握函数调用和参数传递;2、掌握基本的绘图指令,学习如何绘制2维和3维曲线图形。
二、实验原理1、函数文件函数文件的基本结构:函数文件由function 语句引导,其基本结构为: function 输出形参表=函数名(输入形参表) 注释说明部分 函数体语句 说明:(1)关于函数文件名: 函数文件名与函数名也可以不相同。
当两者不同时,MATLAB 将忽略函数名而确认函数文件名,因此调用时使用函数文件名。
(2)关于注释说明部分。
注释说明包括三部分内容:①紧随函数文件引导行之后以%开头的第一注释行。
②第一注释行及之后连续的注释行。
③与在线帮助文本相隔一空行的注释行。
(3)关于return 语句。
执行到该语句就结束函数的执行,程序流程转至调用该函数的位置。
通常,在函数文件中也可不使用return 语句,这时在被调函数执行完成后自动返回。
2、函数调用函数调用的一般格式是:[输出实参表]=函数名(输入实参表)3、普通图形的绘制:2维图形的基本函数为plot 函数,其基本格式为:plot(x,y,‘选项’),选项包括线型、颜色等设置。
3维图形的基本函数为plot3函数,用法和plot 函数相同。
4、绘制对数坐标曲线:常用semilogx(x,y,‘选项’)函数来绘制横坐标维对数坐标的曲线。
5、图形窗口的分割:用函数subplot(m,n,i)来实现。
含义是将图形窗口分为m 行n 列子窗口,然后选定第i 个窗口为当前窗口。
6、坐标系的调整:可用函数axis([xmin,xmax,ymin,ymax,zmin,zmax])来完成。
函数中可以输入4个或6个参数。
注意坐标的最小值必须小于最大值。
7、图形的标注:为坐标轴标注用函数xlabel(‘string ’,文本属性);为图形加标题用函数title(‘string ’,文本属性);在图形窗口的任意位置加入标注用函数text(x,y, ‘string ’)8、绘制特殊图形:绘制极坐标图形用函数polar(角度向量,幅值向量,选项);条形图用函数bar(x,y);扇形图用pie(x)函数。
实验六 M函数文件编程
1、 实验目的
1、掌握M语言程序设计的方法
2、掌握函数文件的编写方法
2、掌握用户参数交互输入设计技术
2、 主要仪器及耗材
计算机,MATLAB7.0。
3、 实验内容和步骤
1、给定三个边长,看看他们是否能够组成一个三角形。
要求:
编写M函数,输入参数为三个边长,而输出则为字符串,说明给定的边长是否能够组成三角形,若可能,进一步指出是否为等腰三角形或者是等边三角形。
对输入的错误数据格式(如字符串等)能够给出错误提示。
2、费波纳切数列:1、1、2、
3、5、8、13……,其递推公式为:
a(1)=a(2)=1,a(n)=a(n-1)+a(n-2)(n>=3)。
编程实现求n项的费波纳切数列。
要求:用M语言函数实现;对输入的错误数据格式(如字符串、小数等)能够给出错误提示。
3编写M脚本文件,输出9×9乘法表。
显示如下。
1×1= 1
1×2= 2 2×2= 4
1×3= 3 2×3= 6 3×3= 9
1×4= 4 2×4= 8 3×4=12 4×4=16
1×5= 5 2×5=10 3×5=15 4×5=20 5×5=25
1×6= 6 2×6=12 3×6=18 4×6=24 5×6=30 6×6=36
1×7= 7 2×7=14 3×7=21 4×7=28 5×7=35 6×7=42 7×7=49
1×8= 8 2×8=16 3×8=24 4×8=32 5×8=40 6×8=48 7×8=56 8×8=64
1×9= 9 2×9=18 3×9=27 4×9=36 5×9=45 6×9=54 7×9=63 8×9=72 9×9=81
参考程序:
for i=1:9;
A=[];
for j=1:i;
A=[A,sprintf('%d×%d=%2d ',j,i,i*j)];
end
disp(A)
end
4、编写一个randm函数,能够产生在[-m,m]之间的随机数。
4、 思考
1、M文件与在Matlab命令窗口中直接输入命令有何异同,有何优缺点?
2、脚本文件与函数文件的异同。
3、函数文件被调用时,函数和被调用之间怎样实现数据传递?。