MATLAB全部实验及答案
更新时间:2024-04-19 08:07:01 阅读量: 综合文库 文档下载
- matlab全部清除命令推荐度:
- 相关推荐
实验项目序号1 MATLAB基本操作
一、实验目的
熟悉MATLAB软件环境,掌握命令窗口的使用。
二、实验基本知识
1、熟悉MATLAB的桌面工具和环境
2、Start菜单
三、主要仪器及耗材
1
计算机
四、实验内容和步骤
1、 MATLAB的启动及操作界面认识
说明有哪几种启动的方法;操作界面有哪些窗口;对常用的窗口作些简单的介绍。
? 使用Windows的“开始”菜单。
? 运行MATLAB系统的启动程序matlab.exe。 ? 利用桌面上的快捷方式。
? MATLAB主窗口
? 命令窗口(Command Window) ? 当前目录窗口(Current Directory) ? 工作空间窗口(Workspace) ? 命令历史窗口(Command History)
2、 下列符号中哪些是MATLAB的合法变量名?用给变量赋值的方法在机器上验证你的
答案(3vars、global、help、My_exp、sin、X+Y、_input、E-4、AbCd、AB_C_。) help,My_exp,sin,AbCd,AB_C_; 3、命令窗口的简单使用
1)简单矩阵的输入
1 2 3 A = 4 5 6
7 8 9
2)求[12+2×(7-4)]÷3的算术运算结果 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遵循每个对应元素之间进行相乘
2
2
3)设A=10,B=20;求C=A/B与D=A\\B?
3
4)设a=[1 -2 3;4 5 -4;5 -6 7]
请设计出程序,分别找出小于0的矩阵元素及其位置(单下标、全下标的形式),并将其单下标转换成全下标
>> a=[1 -2 3;4 5 -4;5 -6 7];/%定义矩阵 >> b = a(find(a<0));%找到a中小于零的元素 b = -2 -6 -4
>> c = find(a<0) c = 4 6 8
>> [x,y] = find(a<0) %找到小于零元素的双下标
%找到小于零元素的单下标
4
>> [x,y] = ind2sub(size(a),find(a<0)) %单下标转换为双下标
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=[1 2 3;3 4 2;5 2 3]; >> a^2 % 矩阵运算 >> a.^2 %数组与矩阵的乘法
7)有一段程序设计如下,请思考并说明运行结果及其原因
clear
X=[1 2;8 9;3 6]; X( : )
解:
转化X为列向量
8)使用两种方法,创建一稀疏矩阵 解:
1)>>a = eye(5);
%创建5阶单位矩阵
>>sparse(a) %将a构造为稀疏矩阵 ans =
(1,1) 1 (2,2) 1 (3,3) 1 (4,4) 1 (5,5) 1 2)>> data = [1 2 2 2]; >> ir = [1 3 2 4]; >> jc = [1 2 4 1];
>> s=sparse(ir,jc,data,4,4) s =
(1,1) 1 (4,1) 2 (3,2) 2 (2,4) 2
5
9)写出下列指令的运行结果
>> A = [ 1 2 3 ]; B = [ 4 5 6 ]; >> C = 3.^A C =
3 9 27 >> D = A.^B
D =
1 32 729
5、已知y?3?4t????esin?43t??若需要计算t∈[-1,1],取间隔为0.01,试计23??算出相对应的y值。 >> t = [-1:0.01:1];
>> y = sqrt(3)/2*exp(-4*t).*sin(4*sqrt(3)*t+pi/3) %注意要用点乘
五、实验注意事项
1、 注意区分大小写
2、 注意数组、矩阵运算的不同之处
六、思考题
1、MATLAB桌面环境有几种样式? Default:缺省的界面
Command Windows Only:仅包含命令行窗体(Command Window)
History and Command Window: 包含两个窗体——命令行窗体(Command Window)和命令历史窗体(Command History),两个窗体并列在界面中
All Tapped:启动所有MATLAB常用的图形界面工具
All but Command Window Minimized:Command Window窗口显示,其他的窗口分别叠加在MATLAB窗体下
2、如何使窗体浮动出来?又如何使窗体内嵌回MATLAB的界面中?
在MATLAB默认的图形窗体环境下,单击命令行窗体左上角 按钮
,就可以将MATLAB命令行窗体弹出
执行“Desktop”菜单下的“Dock Current Directory”命令,可将命令行窗口重新嵌入到MATLAB的界面中
6
实验项目序号2 MATLAB运算基础(一)
一、实验目的
掌握MATLAB各种表达式的书写规则及常用函数的使用
二、实验基本知识
1、矩阵和向量的创建方法和访问方法 1)创建方法
? 逐个输入向量的元素 ? 利用运算符——“:”
语法:X = J:INC:K
? 使用函数linspace和logspace
语法:x = linspace(x1,x2,n),x = logspace (x1,x2,n) 2)访问方法:利用向量或矩阵的索引来完成相应的操作。 矩阵元素的访问 A(i,j) A(I,J) A(i,:) A(:,j) A(:) A(l) A(L) 说 明 访问矩阵A的第i行第j列上的元素,其中i和j为标量 访问由向量I和J指定的矩阵A中的元素 访问矩阵A中第i行的所有元素 访问矩阵A中第j列的所有元素 访问矩阵A的所有元素,将矩阵看作一个向量 使用单下标的方式访问矩阵元素,其中l为标量 访问由向量L指定的矩阵A的元素,向量L中的元素为矩阵元素的单下标数值 2、数据类型,以及操作不同数据类型数据的函数 1)数据类型 数据类型 double sparse 说 明 双精度数据类型 稀疏矩阵数据类型 单精度数据类型 无符号8位整数 无符号16位整数 无符号32位整数 无符号64位整数 有符号8位整数 有符号16位整数 有符号32位整数 有符号64位整数 字节数 8 N/A 4 1 2 4 8 1 2 4 8 取 值 范 围 0 ~ 28-1 160 ~ 2-1 0 ~ 232-1 0 ~ 264-1 78-2 ~ 2-1 -215 ~ 215-1 -231 ~ 231-1 -263 ~ 263-1 single uint8 uint16 uint32 uint64 int8 int16 int32 int64 2)操作函数
整数类型的运算函数
函 数 bitand bitcmp bitor bitmax bitxor bitset bitget bitshift 说 明 数据位“与”运算 按照指定的数据位数求数据的补码 数据位“或”操作 最大的浮点整数数值,一般为253?1=9 007 199 254 740 991 数据位“异或”操作 将指定的数据位设置为1 7 获取指定的数据位数值 数据位移操作
创建逻辑类型数据的函数
函 数 logical True False 说 明 将任意类型的数组转变成为逻辑类型数组,其中,非零元素为真,零元素为假 产生逻辑真值数组 产生逻辑假值数组 MATLAB的逻辑运算
运 算 符 && || & | ~ xor any all 说 明 具有短路作用的逻辑与操作,仅能处理标量 具有短路作用的逻辑或操作,仅能处理标量 元素与操作 元素或操作 逻辑非操作 逻辑异或操作 当向量中的元素有非零元素时,返回真 当向量中的元素都是非零元素时,返回真 MATLAB的关系运算
运算符 = = ~= < 等于 不等于 小于 说明 > <= >= 运算符 大于 小于等于 大于等于 说明 格式化字符
字 符 %c %d %e %E %f %g %G %o %s %u %x %X 说 明 显示内容为单一的字符 有符号的整数 科学技术法,使用小写的字符e 科学技术法,使用大写的字符E 浮点数据 不定,在%e或者%f之间选择一种形式 不定,在%E或者%f之间选择一种形式 八进制表示 字符串 无符号的整数 十六进制表示,使用小写的字符 十六进制表示,使用大写的字符
三、主要仪器及耗材
计算机
四、实验内容和步骤
1、已知A=[12 34 -4;34 7 87;3 65 7],B=[1 3 -1;2 0 3;3 -2 7],求下列表达式的值:
1)A+6B和A-B+I(I为单位矩阵) 2)A*B和A.*B
2
8
3)A^3和A.^3
4)[A,B]和[A([1,3],:);B^2]
2、设有矩阵A和B,A=[1 2 3 4 5;6 7 8 9 10;11 12 13 14 15;16 17 18 19 20;
21 22 23 24 25],B=[3 0 16;17 -6 9;0 23 -4;9 7 0;4 13 11] 1)求它们的乘积C
2)将矩阵C的右下角3x2子矩阵赋给D
3、已知A=[23 10 -0.778 0;41 -45 65 5;32 5 0 32;6 -9.54 54 3.14],取出其前3行构成矩阵B,其前两列构成矩阵C,其左下角3x2子矩阵构成矩阵D,B与C的乘积构成矩阵E,分别求E
答案:满足(A>=10&A<25)的元素的索引
>> A=[23 10 -78 0;41 -45 65 5;32 5 0 32;6 -54 92 14]; >> a = find(A>=10&A<25) a = 1 5 16
4、使用函数,实现矩阵左旋90°或右旋90°的功能。 左旋: >> rot90(A) ans =
0 5 32 14 -78 65 0 92 10 -45 5 -54
23 41 32 6 右旋: >> rot90(A,3) ans =
6 32 41 23 -54 5 -45 10 92 0 65 -78 14 32 5 0
5、求S=2+2+2+2+2+??+2的值(提示:利用求和函数与累乘积函数。) >> a=2*ones(1,10);%生成全为2,个数为10的行矩阵 >> b=cumprod(a);%得到累乘量(如2、2)等等
1
2
0
1
2
3
4
10
9
>> c=sum(b)+1 c =
2047
6、用reshape指令生成下列矩阵,并取出方框内的数组元素。 答案:
>>a = [1:5 10:-1:6]; >>b = 11:25;
>>A = [reshape(a,5,2)'; reshape(b,5,3)']%生成矩阵A >>d1 = A(2,2:3) >>d2 = A(2:4,4) >>d3 = A(4:5,1:3)
五、实验注意事项
不同的函数有不同的功能,同一函数又有不同的用法,注意正确使用各函数。
六、思考题
元素的单下标访问和全下标访问有何关联之处?
实验项目序号3 MATLAB运算基础(二)
一、实验目的
掌握MATLAB中有关字符串、元胞、结构的函数的使用。
二、实验基本知识
有关字符串、元胞、结构的函数
常用的字符串操作函数
函 数 char double blanks 将字符串转变成Unicode数值 说 明 创建字符串,将数值转变成为字符串 ) 创建空白的字符串(由空格组成将字符串尾部的空格删除 判断变量是否是字符类型 水平组合字符串,构成更长的字符向量 垂直组合字符串,构成字符串矩阵 比较字符串,判断字符串是否一致 比较字符串前n个字符,判断是否一致 比较字符串,比较时忽略字符的大小写 10 比较字符串前n个字符,比较时忽略字符的大小写 在较长的字符串中查寻较短的字符串出现的索引 在第一个字符串中查寻第二个字符串出现的索引 对齐排列字符串
deblank ischar strcat strvcat strcmp strncmp strcmpi strncmpi findstr strfind strjust
数字和字符之间的转换函数
函 数 将数字转变成为字符串 将整数转变成为字符串 说 明
num2str int2str mat2str str2double str2num sprintf sscanf 将矩阵转变成为可被eval函数使用的字符串 将字符串转变为双精度类型的数据 将字符串转变为数字 格式化输出数据到命令行窗口 读取格式化字符串 不同数值之间的转换函数
函 数 hex2num hex2dec dec2hex bin2dec dec2bin base2dec dec2base 字 符 %c %d %e %E %f %g %G %o %s %u %x %X 说 明 将十六进制整数字符串转变成为双精度数据 将十六进制整数字符串转变成为十进制整数 将十进制整数转变成为十六进制整数字符串 将二进制整数字符串转变成为十进制整数 将十进制整数转变成为二进制整数字符串 将指定数制类型的数字字符串转变成为十进制整数 将十进制整数转变成为指定数制类型的数字字符串 说 明 显示内容为单一的字符 有符号的整数 科学技术法,使用小写的字符e 科学技术法,使用大写的字符E 浮点数据 不定,在%e或者%f之间选择一种形式 不定,在%E或者%f之间选择一种形式 八进制表示 字符串 无符号的整数 十六进制表示,使用小写的字符 十六进制表示,使用大写的字符 格式化字符 元胞数组的操作函数
cell cellfun celldisp cellplot cell2mat mat2cell num2cell deal 函 数 创建空的元胞数组 为元胞数组的每个元胞执行指定的函数 显示所有元胞的内容 利用图形方式显示元胞数组 11 将元胞数组转变成为普通的矩阵 将数值矩阵转变成为元胞数组 将数值数组转变成为元胞数组 将输入参数赋值给输出 说 明
在cellfun函数中可用的函数
函 数 isempty islogical isreal length ndims prodofsize 说 明 若元胞元素为空,则返回逻辑真 若元胞元素为逻辑类型,则返回逻辑真 若元胞元素为实数,则返回逻辑真 元胞元素的长度 元胞元素的维数 元胞元素包含的元素个数 结构操作函数
struct fieldnames getfield setfield rmfield isfield isstruct oderfields 函 数 获取结构的字段名称 获取结构字段的数据 设置结构字段的数据 删除结构的指定字段 判断给定的字符串是否为结构的字段名称 判断给定的数据对象是否为结构类型 将结构字段排序 说 明 创建结构或将其他数据类型转变成结构
三、主要仪器及耗材
计算机
四、实验内容和步骤
1、求[100,999]之间能被21整除的数的个数(提示:先利用冒号表达式,再利用find和length函数。) 答案:
>> t = [100:999]
>> i = find(rem(t,21)==0) >> length(i) ans = 43
2、建立一个字符串向量,删除其中的大写字母(提示:利用find函数和空矩阵。) >> a = 'dadaAf'
12
>> b = find(a>='A'&&a<='Z') >> a(b) = [] a = dadaf
3、写出使以下这段文字成为字符串的MATLAB指令。注意保持这段文字的格式。
在英式用法中,引号通常是单引号,如‘Fire!’。
In GB usage quotation marks are usually single: ‘fire!’ 答案:
>> disp('In GB usage quotation marks are usually single: ''fire!''')
4、用结构体数组来存储2名学生的基本情况数据,每名学生的数据包括学号、姓名、专业和3门课程的成绩。
>>a = struct('num',{1,2},'name',{'mike','hike'}, 'major','tele','score', {rand(2,1)*100,rand(2,1) *100}); 5、建立矩阵A并回答有关问题
A{1,1}=1;
A{1,2}=’Brenden’; A{2,1}=reshape(1:9,3,3);
A{2,2}={12,34,2;54,21,3;4,23,67};
1) 如何使用访问的方式将Brenden改写成BRENDEN? >> A{1,2}=upper(A{1,2}) A =
[ 1] 'BRENDEN' [3x3 double] {3x3 cell}
2) 分别执行A(3)=[]和A{3}=[]后,A的值各是多少?并说明原因。 >> A{3}=[] A =
[ 1] []
[3x3 double] {3x3 cell} >> A(3)=[]
A =
[1] [3x3 double] {3x3 cell}
6、利用MATLAB提供的rand函数和圆整函数随机生成4X3整数矩阵A,进行如下操作
1)A各列元素的平均值和中值 平均值
>> A_mean=mean(A)
13
A_mean =
0.5000 0.7500 0.7500
中值
>> A_median=median(A)
A_median =
0.5000 1.0000 1.0000
2)A的最大元素和最小元素及它们的位置 最大值
>> A_max=max(max(A)) A_max = 1 位置:
>> [x,y]=find(A==A_max) >> A_maxlocal=[x(1) y(1)] 最小值
>> A_min=min(min(A)) A_min = 0 位置:
>> [xx,yy]=find(A==A_min) >>A_minlocal=[xx(1) yy(1)]
3)求A的每行元素的和以及全部元素之和 >> A_rsum=sum(A,2)%行的和 >> A_sum=sum(sum(A))%全和
4)分别对A的每列元素按升序、每行元素按降序排列 >> A_rsort=abs(sort(-A,2))
五、实验注意事项
字符串函数的使用细节;对元胞数组中的元胞的访问;结构数组的创建方法。
六、思考题
访问元胞数组的两种操作符“{}”和“()”之间有什么不同? 使用“{}”直接获取元胞数组的元胞内容
使用“()”直接访问元胞数组的元胞,获取的数据也是一个元胞数组。
实验项目序号4 MATLAB循环结构程序设计
14
一、实验目的
1、掌握建立和执行M文件的方法;
2、掌握利用for语句和while语句实现循环结构的方法。
二、实验基本知识
MATLAB的M语言文件是纯文本格式的文件,MATLAB也提供了一个编辑器,叫作meditor,它也是系统默认的M文件编辑器。运行meditor的方法非常简单,在MATLAB命令行窗口中键入下面的指令就可以打开meditor:
>> edit
这时MATLAB将启动meditor,然后创建一个未命名的空白文件。
这时用户就可以直接在编辑器中键入MATLAB指令,开发M语言文件了。M语言文件可以分为两类,其中一类是脚本文件,另外一类叫作函数文件。
脚本文件是最简单的一种M语言文件。所谓脚本文件,就是由一系列的MATLAB指令和命令组成的纯文本格式的M文件,执行脚本文件时,文件中的指令或者命令按照出现在脚本文件中的顺序依次执行。脚本文件没有输入参数,也没有输出参数,执行起来就像早期的DOS操作系统的批处理文件一样,而脚本文件处理的数据或者变量必须在MATLAB的公共工作空间中。
脚本文件中常用的MATLAB指令
指 令 pause input keyboard return 说 明 暂停当前M文件的运行,按任意键继续 等待用户输入 暂停当前M文件的运行,并将程序控制权交还给MATLAB命令行,这时可以正常使用命令行,直到键入“return”并按回车键后,M文件才继续运行 返回当前的函数或者命令行 程序流程控制语句:
15
1、for循环结构
语法:for i=初值:增量:终值
语句1 ?? 语句n end
说明:1)i=初值:终值,则增量为1。
2)初值、增量、终值可正可负,可以是整数或小数,只须符合数学逻辑。 2、while 循环结构 语法:while 逻辑表达式
循环体语句 end
说明:1)whiIe结构依据逻辑表达式的值判断是否执行循环体语勾。若表达式的值为
真,执行循环体语句一次、在反复执行时,每次都要进行判断。若表达式的值为假,则程序执行end之后的语句。
2)为了避免因逻辑上的失误,而陷入死循环,建议在循环体语句的适当位置加break语句、以便程序能正常执行。(执行循环体的次数不确定;每一次执行循环体后,一定会改变while后面所跟关系式的值。) 3)while循环也可以嵌套、其结构如下:
while逻辑表达式1 循环体语句1 while逻辑表达式2 循环体语句2 end
循环体语句3 end
三、主要仪器及耗材
计算机
四、实验内容和步骤
1、分别使用for循环语句和while循环语句找出最小的n值,使得n!>10,并求出n!。要求显示的结果为 n=70
n!=1.197857e+100>1e100 或
70!=1.197857e+100>1e100
100
16
程序for:
s =1; for n=1:100 s=s*n; if(s>10^100) break; end end
str1=['n=',num2str(n)]; str2=['n!=',num2str(s)]; disp(str1) disp(str2)
程序while:
n=1; s=1;
while(s<=10^100) s=s*n; n=n+1; end
str1=['n=',num2str(n-1)]; str2=['n!=',num2str(s)]; disp(str1) disp(str2)
2、已知 f1=1,n=1
f2=0,n=2 f3=1,n=3
fn=fn-1-2fn-2+fn-3,n>3 求f1 ~ f50中:
1)最大值和最小值及它们的位置,各数之和(最大值给变量MAX,其位置给变量x,最小值给变量MIN,其位置给变量y,各数之和给变量SUM)。 程序:
f(1)=1; f(2)=0; f(3)=1; for n=4:50
f(n)=f(n-1)-2*f(n-2)+f(n-3); end
[MAX,x]=max(f)%×¢òa2?òa·?o?£?òa?′DDμ?ó????? [MIN,y]=min(f)
17
SUM=sum(f)
2)正数、零、负数的个数(依次赋值给变量positive,zero,negative)。 将[MAX,x]=max(f)和之后的语句换为:
positive=length(find(f>0)) zero=length(find(f==0)) negative=length(find(f<0))
3、Fibonacci数组的元素满足Fibonacci规则:
ak+2=ak+ak+1,(k=1,2,3,?);且a1= a2=1。
请设计一段程序,求出该数组中第一个大于10000的元素,要求显示的结果为: i=21 a(i)=10946 或者 a(21)=10946 程序为:
a= []; a(1)=1; a(2)=1; for i=1:10000
a(i+2)=a(i)+a(i+1); if a(i)>10000 break; end end
disp(['i=',num2str(i)]) disp(['a(i)=',num2str(a(i))])
五、实验注意事项
1、for语句和while语句的应用场合 2、注意输出格式的要求
六、思考题
请思考下列两段程序及其运行结果,说明原因。 1) clear (2)clear for i=1:10; for i=1:10; x(i)=i.^2; x(i)=i.^2; end end x x(i)
18
实验项目序号5 MATLAB选择结构程序设计
一、实验目的
1、掌握建立和执行M文件的方法;
2、掌握利用if语句和switch语句实现选择结构的方法。
二、实验基本知识
MATLAB的M语言文件是纯文本格式的文件,MATLAB也提供了一个编辑器,叫作meditor,它也是系统默认的M文件编辑器。运行meditor的方法非常简单,在MATLAB命令行窗口中键入下面的指令就可以打开meditor:
>> edit
这时MATLAB将启动meditor,然后创建一个未命名的空白文件。
这时用户就可以直接在编辑器中键入MATLAB指令,开发M语言文件了。M语言文件可以分为两类,其中一类是脚本文件,另外一类叫作函数文件。
脚本文件是最简单的一种M语言文件。所谓脚本文件,就是由一系列的MATLAB指令和命令组成的纯文本格式的M文件,执行脚本文件时,文件中的指令或者命令按照出现在脚本文件中的顺序依次执行。脚本文件没有输入参数,也没有输出参数,执行起来就像早期的DOS操作系统的批处理文件一样,而脚本文件处理的数据或者变量必须在MATLAB的公共工作空间中。
脚本文件中常用的MATLAB指令
指 令 pause input keyboard return 说 明 暂停当前M文件的运行,按任意键继续 等待用户输入 暂停当前M文件的运行,并将程序控制权交还给MATLAB命令行,这时可以正常使用命令行,直到键入“return”并按回车键后,M文件才继续运行 返回当前的函数或者命令行 19
程序流程控制语句: 1、if-else-end分支结构 语法:if 表达式 1
语句1
else if 表达式 2(可选)
语句2 else(可选) 语句3 end end
说明:1)if结构是一个条件分支语句,若满足表达式的条件,则往下执行;若不
满足,则跳出if结构。
2)else if表达式2与else为可选项,这两条语句可依据具体情况取舍。 3)注意:每一个if都对应一个end,即有几个if,记就应有几个end。
2、switch-case结构
语法:switch表达式
case常量表达式1 语句组1 case常量表达式2 语句组2 ?? otherwise 语句组n end
说明:1)switch后面的表达式可以是任何类型,如数字、字符串等。
2)当表达式的值与case后面常量表达式的值相等时,就执行这个case后面的语句组如果所有的常量表达式的值都与这个表达式的值不相等时,则执行otherwise后的执行语句。
三、主要仪器及耗材
计算机
四、实验内容和步骤
1、输入一个百分制成绩,要求输出成绩等级A、B、C、D、E。其中90分~100分为A,80分~89分为B,70分~79为C,60分~69分为D,60分以下为E。
要求:1)分别用if语句和switch语句实现
20
2)对不合理的成绩应输出出错信息“输入的成绩不合理”(若成绩出现小数,则只能是“.5”) 程序switch:
score=input('??ê?è?°ù·???3é?¨:'); if rem(score,0.5)==0 switch score
case num2cell(90:0.5:100) disp('?úμ?3é?¨μè???a A') case num2cell(80:0.5:89) disp('?úμ?3é?¨μè???a B') case num2cell(70:0.5:79) disp('?úμ?3é?¨μè???a C') case num2cell(60:0.5:69) disp('?úμ?3é?¨μè???a D') case num2cell(0:0.5:59.5) disp('?úμ?3é?¨μè???a E') otherwise
disp('??ê?è?μ?3é?¨2?o?àí') end else
disp('??ê?è?μ?3é?¨2?o?àí£?è?3???D?êy???üê?0.5') end
程序if:
2、x=input('??????????:'); 3、if rem(x,0.5)==0
4、if (x<=100 & x>=90) 5、 disp('A')
6、elseif (x>=80 & x<=89) 7、 disp('B')
8、elseif (x>=70 & x<=79) 9、 disp('C')
10、elseif (x>=60 & x<=69) 11、 disp('D')
12、elseif (x<60&x>=0) 13、 disp('E') 14、else
15、 disp('ê?è?μ?3é?¨2?o?àí') 16、end 17、else
18、 disp('????????????§?????¨a??????????????????0.5') 19、end
20、设计程序,完成两位数的加、减、乘、除四则运算,即产生两个两位随机整数,再
21
输入一个运算符号,做相应的运算,显示相应的结果,并要求结果显示类似于“a=x+y=34”。
程序:
x=round(rand(1)*100); y=round(rand(1)*100); disp(['x=',num2str(x)]); disp(['y=',num2str(y)]);
A=input('请输入一个运算符号:','s'); %书上114页有说明 switch(A) case '+'
a=x+y; disp(['a=x+y=',num2str(a)]); case '-'
a=x-y;disp(['a=x-y=',num2str(a)]); case '*'
a=x*y;disp(['a=x*y=',num2str(a)]); case '/'
a=x/y;disp(['a=x/y=',num2str(a)]); end
3、求下列分段函数的值
??2???6,??0且 ??-3?y???2?5??6,0??<10,??2且 ??3
??2???1,其他? 要求:用if语句实现,分别输出x = -5.0,-3.0,1.0,2.0,2.5,3.0,5.0
时的y值。其中x的值以向量的形式从键盘输入。
x=[-5.0,-3.0,1.0,2.0,2.5,3.0,5.0] if x<0&x~=-3 y=x.*x+x-6;
elseif x>=0&x<5&x~=2&x~=3 y=x.*x-5*x+6; else y=x.*x-x-1 end y
五、实验注意事项
1、if语句和switch语句的应用场合
22
2、编程时对输入和输出的要求
六、思考题
填写下列程序的执行结果: a=[90,70,65,54,76]; n=length(a);b=zeros(1,n); for i=1:n if a(i)>75 b(i)=100-a(i); elseif a(i)<=75 b(i)=a(i)-60; end end disp(b)
b= 10 10 5 -6 24 。
实验项目序号6 MATLAB函数文件程序设计
一、实验目的
1、理解函数文件的概念;
2、掌握定义和调用MATLAB函数的方法。
二、实验基本知识
MATLAB的M语言文件是纯文本格式的文件,MATLAB也提供了一个编辑器,叫作meditor,它也是系统默认的M文件编辑器。运行meditor的方法非常简单,在MATLAB命令行窗口中键入下面的指令就可以打开meditor:
>> edit
这时MATLAB将启动meditor,然后创建一个未命名的空白文件。
23
这时用户就可以直接在编辑器中键入MATLAB指令,开发M语言文件了。M语言文件可以分为两类,其中一类是脚本文件,另外一类叫作函数文件。
M函数文件和脚本文件不同,函数文件不仅有自己特殊的文件格式,不同的函数还分别具有自己的工作空间。同其他高级语言类似,M函数文件也有局部变量和全局变量。
函数文件的结构和编写方法:函数只能在函数体内对变量进行操作,也就是只能访问函数本身工作空间中的变量。
M函数文件的结构:
(1) 函数定义行(function) (2) H1行(函数帮助文本的第一行) (3) 函数帮助文本 (4) 函数体 (5) 注释
函数文件编写后,保存时,其文件名必须与函数名相同。注意:函数名不要与MATLAB自身的函数命令相同。
三、主要仪器及耗材
计算机
四、实验内容和步骤
1、编写一个函数文件chengji.m,用于求两个矩阵的乘积和点乘,然后在命令行窗口中调用该函数(提示:使用varargout函数),要求: 1)当两矩阵是尺寸相同的方阵时,返回它们的乘积和点乘。
2)当两矩阵不是尺寸相同的方阵时,则根据它们的尺寸,分别进行乘积或点乘。 3)当两矩阵的尺寸不能满足乘积或点乘的要求时,则提示“这两个矩阵不能乘”。 程序为:
function varargout=chengji(a,b)
24
[x,y]=size(a); [xx,yy]=size(b);
if (xx==yy&&x==y&&x==xx) varargout{1}=a*b; varargout{2}=a.*b; elseif (x==xx&&y==yy) varargout{1}=a.*b; disp('???ü×?μ?3?') varargout{2}=0; elseif (x==yy&&xx==y) disp('?éò?×?á??????ó3?') varargout{1}=a*b; varargout{2}=b*a; elseif (x==yy||xx==y) try
varargout{1}=a*b; disp('???ü×????ó3?') varargout{2}=0; catch
varargout{1}=b*a; disp('???ü×????ó3?') varargout{2}=0; end else
error('?aá??????ó2??ü3?') end
2、编写一函数qiuhe.m,实现sum(A)的功能,其中A为矩阵。 程序为:
function y=qiuhe(a) y=[];
[x,yy]=size(a); if x==1 s=0; for k=1:yy s=s+a(1,k); end y=s; else for j=1:yy s=0; for i=1:x s=s+a(i,j); end
y(1,j)=s;
25
end end
3、编写一个阶乘函数jiecheng.m,然后在试验三的编程题“分别使用for和while语句找出最小的n值,使得n!>10,并求出n!”程序中调用该函数。 程序:
function s=jiecheng(n) s=1; if n==0 s=1; elseif n<0
error('n±?D?′óóúμèóú0') else for i=1:n s=s*i; end end
100
五、实验注意事项
1、注意脚本文件和函数文件的区别 2、函数文件的调用
六、思考题
已知一函数文件如下:
function y=temf(a) if length(a)<2 y=a; else
y=max(a)-min(a); end
则在命令窗口执行有:
temf([23 45 67 89])= 66 temf(78)= 78
实验项目序号7 数据插值与曲线拟合实验
一、实验目的
26
1、掌握数据统计和分析的方法;
2、掌握数据插值与曲线拟合的方法及其应用。
二、实验基本知识
1、数据插值运算
MATLAB提供的插值计算函数 函数 interp1 说明 一维插值(数值查表) 函数 说明 griddata3 三维数据网格的超表面数据插值 interp1q 一维快速插值(数值查表) griddatan 多维数据网格的超表面数据插值 interp2 interp3 interpn interpft 二维插值(数值查表) 三维插值(数值查表) N维插值(数值查表) 使用FFT算法的一维插值 mkpp pchip ppval spline unmkpp 产生分段多项式 分段的厄密多项式 计算分段多项式的数值 三次杨条插值 分段多项式的细节 griddata 二维数据网格的表面数据插值 1)一维插值:在MATLAB中实现一维插值的函数是interp1。 调用格式为:Yi=interp1(X,Y,Xi,method)
? X和Y为已知的原始数据,分别描述采样点和采样值; ? Xi为需要计算的插值点,是一个向量或标量; ? Yi是插值结果;
? X和Y,Xi和Yi若都为向量,则等长,若Y和Yi为矩阵,则
length(X) and size(Y,1) must be the same. ? method是插值方法,允许的取值有多种;
? 若进行插值运算时,Xi的取值超过了X的范围,则需要进行外插值
运算:Yi=interp1(X,Y,Xi,method,’extrap’)。
2)二维插值:在MATLAB中实现二维插值的函数是interp2。 调用格式为:Zi=interp2(X,Y,Z,Xi,Yi,method)
? X和Y为原始数据,是两个等长的已知向量,分别描述两个参数的采
样点;
? Z是与参数采样点对应的函数值;
? Xi ,Yi是两个向量或标量,描述欲插值的点; ? Zi是根据相应的插值方法得到的插值结果;
? method是插值方法,允许的取值有多种,与一维插值函数相同; ? X,Y,Z也可以是矩阵的形式;
? 若进行插值运算时,Xi的取值超过了X的范围,则需要进行外插值
27
运算:Zi=interp2(X,Y,Z,Xi,Yi,method,’extrap’)。
2、曲线拟合
曲线拟合的目的是用一个较简单的函数去逼近一个复杂的或未知的函数。利用MATLAB进行曲线拟合主要有两种方法:回归法拟合和多项式拟合。
1)回归法拟合主要是使用MATLAB的左除运算来寻找曲线拟合解析函数的系数。 2)多项式拟合
在MATLAB中进行多项式拟合主要使用的函数有: ? polyfit:用来进行拟合计算
P=polyfit(x,y,n)
x和y为参与曲线拟合的原始数据,n为进行拟合计算的多项式次数,函数的返回值是多项式的系数,即函数的运算结果为多项式的系数向量
y?pnxn?pn?1xn?1?......?p1x?p0y=polyval(p,x)
p为多项式的系数,x是变量的数值,得到的结果就是函数的数值向量。
? polyval:用来计算多项式的数值
三、主要仪器及耗材
计算机
四、实验内容和步骤
1.已知原始数据x?0:1:4*pi,y?sin(x).*exp(?x/5),插值点为
xi?0:0.3:4*pi,试用四种不同的插值方法进行插值,并在一副图中绘出四种插
值曲线。 程序:
x=0:1:4*pi;
y=sin(x).*exp(-x/5); xi=0:0.3:4*pi;
y1=interp1(x,y,xi,'nearset'); y2=interp1(x,y,xi,'linear'); y3=interp1(x,y,xi,'spline'); y4=interp1(x,y,xi,'cubic');
plot(x,y,'-m',xi,y1,'*r',xi,y2,'ok',xi,y3,'^b',xi,y4,'+g') legend('?-ê?êy?Y','×??üμ?2??μ','??D?2??μ','?ùì?2??μ','ᢷ?2??μ') title('μúò?ìa ????2??μ·?·¨??DD2??μ','FontName','á¥êé','FontSize',20) xlabel('X?á','FontName','á¥êé','FontSize',16) ylabel('Y?á','FontName','á¥êé','FontSize',16)
2.考虑下面的数据,一位举重教练收集了不同性别的举重动员每个年龄的最大举重磅数,他相信这三者之间存在着函数关系,请创建一个年龄数组,以便估算当前队伍中
28
队员(要求13~20岁每一岁都有)的最大举重。 最 大 举 性别 男 女 程序:
t=[13 15 17 19 20]; sex=[0,1]';
y=[270 290 330 350 380;250 270 310 330 360 ]; x=[13:20]; sex_2=[0,1]';
y_2=interp2(t,sex,y,x,sex_2) surf(x,sex_2,y_2)
重 年龄 13 15 17 19 20 270 250 290 270 330 310 350 330 380 360
3.某乡镇企业2009-2015年的生产利润如下
年份 利润(万元) 2009 70 2010 122 2011 144 2012 152 2013 174 2014 196 2015 202 要求用多项式拟合法预测出该企业2016年和2017年的利润,并绘出拟合图。 程序:
x=2004:2010;
y=[70 122 144 152 174 196 202]; k=polyfit(x,y,1); x1=2004:2013; y1=polyval(k,x1);
plot(x,y,'-ro',x1,y1,'-b*');
title('?3???ò?óòμ2004-2013?êμ?éú2úà?èó') legend('04-10?êμ?à?èó','04-13?êμ?à?èó?÷ê???') xlabel('?ê·Y'); ylabel('à?èó');
text(2011,polyval(k,2011),'<---2011?êà?èó') text(2012,polyval(k,2012),'<---2012?êà?èó') grid on
4. 先使用命令load加载census.mat得到一组数据(cdate,pop),该数据是美国自1790到1990年(以10年为一单位)的总人口。利用回归法拟合,预测出美国在2010年的人口总数,写出拟合模型y?a0?a1x?a2x(其中y为pop,x为cdate),并绘出拟合图。
29
2load('census.mat'); nian=[1990:2010]; p=polyfit(cdate,pop,2); z=polyval(p,cdate); zz=polyval(p,nian); my=mean(pop); mz=mean(z);
R=sum((pop-my).*(z-mz))./sqrt(sum((pop-my).^2).*sum((z-mz).^2)) plot(cdate,pop,'*',cdate,z,'r',nian,zz,'b-')
xlabel('?ê ·Y(ê??ê)','FontName','á¥êé','FontSize',16) ylabel('è??ú£¨°ùíò£?','FontName','á¥êé','FontSize',16) title('μú??ìa
?à1ú×?1790-1990?êμ?×üè??ú','FontName','á¥êé','FontSize',20) text(1990, 248.73,'<----??oó?a?ao?êy?Y') legend('?-êy?Y','?ao??ú??')
五、实验注意事项
1、插值运算时应变量和自变量的确定 2、曲线拟合时逼近函数的确定
六、思考题
由离散点数据来确定函数的方法有函数插值和曲线拟合两种:若测量值是准确的,没有误差,一般用 插值 ;若测量值与真实值有误差,一般用 拟合 。
实验项目序号8 MATLAB基本绘图
一、实验目的
掌握绘制MATLAB二维、三维和特殊图形的常用函数;掌握绘制图形的辅助操作。
二、实验基本知识
1、基本的绘图指令 ? 绘制函数——plot函数
? 函数能够将向量或者矩阵中的数据绘制在图形窗体中,并且可以指定不同的
线型和色彩
? 同一个plot函数可以一次绘制多条曲线 ? 基本语法格式
? 绘制一条曲线
plot(xdata,ydata,’color_linestyle_marker’)
? 绘制多条曲线
30
正在阅读:
MATLAB全部实验及答案04-19
2018届北师大版(文) 函数与导数综合测试(大小题) 检测卷07-08
现代教育技术 形考答案06-30
东财企业税收筹划B在线作业及答案07-07
【学习】党内应知应会(参考)02-22
实用的六年级小学作文1300字3篇04-06
职业高中文秘专业秘书基础复习题参考答案08-10
三弦智慧笔记04-10
Quantifying the effect of slope on extensive green roof stor04-22
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 答案
- 实验
- 全部
- MATLAB
- ubuntu下的stm32开发环境搭建
- 论中班幼儿倾听能力的培养策略
- 建设工程监理及相关法规制度 试题库
- 电功率(动态电路)综合计算
- 下穿地道箱涵段防水工程施工方案 精品
- 最新版苏教版四年级下册数学期末试卷5套(2018新教材)
- 浙江省2012年10月高等教育自学考试模具材料与热处理试题
- 《概率论与数理统计》复习题
- 关于辛庄小学20072008学年第二学期期末考试的安排
- 宝钢物流实习报告
- 《郑成功》说课稿
- Code Composer Studio基本操作
- 西方经济学(本)第九章 国民经济核算 综合练习题参考答案
- 2007特大干旱事件的诊断分析 - 图文
- 安倍回应中日话题 跟一战时英德战前关系极相似
- 计算机基础习题第三章
- 旅游政策法规课程标准
- 论金波儿童诗的美学特征
- 五上品社 教学计划
- 相似三角形教学设计