实验课程名称:___数学实验____________
20##秋20##级《MATLAB程序设计》实验报告
实验三 班级:软件122 姓名:张丽静 学号:122489
一、实验目的
1、掌握建立和执行M文件的方法。
2、掌握选择结构、多分支选择结构程序的编程方法。
3、掌握多种循环结构程序的编程方法。
4、掌握定义函数文件和调用函数文件的方法。
二、实验内容
1、MATLAB M文件的创建与使用。
(1) 建立自己工作目录,如D:\MATLAB。在File菜单中,单击Set Path菜单项,在弹出对话框中建立目标文件夹,:单击Add Folder按钮,将自己的工作目录D:\MATLAB添加到搜索目录之中,按Save按钮保存,如图1。
图1 工作目录设置
(2) 在M文件编辑器中编制命令行文件。在File菜单中,单击New—>M-File,弹出M文件编辑器,如图2:
图2 编辑器
在编辑器中输入如下命令程序:
%求小于20##且为2的整数次幂的正整数。
f(1)=2;
k=1;
while f(k)<1000
f(k+1)=f(k)*2;
k=k+1;
end
f,k
调试后,将其以test1.m形式保存在D:\MATLAB中。
(3) 命令行程序运行。进入命令窗口,键入test1,观察运行结果:
(4) 按上述步骤,在在编辑器中输入如下函数文件:
function f=tt(n)
%求小于任何正整数且为2的整数次幂的正整数。
%c=n(n)
%n可取任意正整数。
%
%20##年8月。
f(1)=2;
k=1;
while f(k)<ceil(n/2) %ceil函数取最近的正整数
f(k+1)=f(k)*2;
k=k+1;
end
f
调试后,将其以test2.m形式保存在D:\MATLAB中。
(5) 进入命令窗口,键入test2(9),观察程序运行结果。
2、编写一个函数M文件,计算下面函数的值,给出标量x的值,调用该函数后,返回y的值。
选择一些数据测试编写的函数。
3、编写一个函数M文件,返回向量x中元素的和、平均值、最大值、最小值、均方根值。其中方均根值(Root Mean Square)的计算公式为:
并用下面数据测试你写的函数:
(1) x=sin(0:0.01:6*pi)
>> x=sin(0:0.01:6*pi);
>> y=text4(x)
(2) x=rand(1,200),得到的x为200个(0,1)之间均匀分布的随机数。
>> x=rand(1,200);
>> y=text4(x)
4、编写一个函数M文件,若给出一个向量,函数返回如下范德蒙矩阵。
例如在命令窗口输入>>v=myvander([2 3 4 5]),得,同时生成一些数据测函数。
5、分别使用while和for编写命令文件,用循环语句编程计算s值:
同时对编写的文件设置断点,观察变量取值的变化情况。
6、数论中一个有趣的题目:任意一个正整数,若为偶数,则用2除之,若为奇数,则与3相乘再加上1。重复此过程,最终得到的结果为1。如:
2®1
3®10®5®16®8®4®2®1
6®3®10®5®16®8®4®2®1
建立命令M文件,完成上述功能,要求显示数字处理过程。
7、设计一个学生身高的管理系统,输出身高的基本分为5等:很高、较高、中等、较矮、矮,其中190cm以上为“很高”,[180cm,190cm)区间为“较高”,[170cm,180cm)为“中等”,[1160cm,170cm)为“较矮”,160cm以下为“矮”,要求分别用if语句和switch语句实现
8、Fibonacci数组的元素满足Fibonacci规则:
ak+2=ak+ak+1,(k=1,2,3,…);且a1= a2=1。
请设计一段程序,求出该数组中第一个大于10000的元素
要求显示的结果为:
i=21
a(i)=10946
或者
a(21)=10946
9、编写一个函数文件and.m,用于求两个输入矩阵的乘积和点乘,然后在命令行窗口中调用该函数,要求:
(1) 当两矩阵是尺寸相同的方阵时,返回它们的乘积和点乘。
(2) 当两矩阵不是尺寸相同的方阵时,则根据它们的尺寸,分别进行乘积或点乘
(3) 当两矩阵的尺寸不能满足乘积或点乘的要求时,则提示“这两个矩阵不能乘”
10、编写一个阶乘函数factorial.m,然后在如下程序中调用该函数,
“分别使用for和while语句找出最小的n值,使得n!>10100,并求出n!”
11、下列程序用来判断一个人的体温是否处于危险状态。调试程序是否正确,如果程序错误指出错误在哪里?并写出正确答案。
temp=input(‘请输入体温: temp = ’);
if temp < 36.5
disp(‘体温偏低’);
elseif temp > 36.5
disp(‘体温正常’);
elseif temp > 38.0
disp(‘体温偏高!’);
elseif temp > 39
disp(‘体温高!!’);
end
12、使用嵌套for循环命令创建下列矩阵:
>> text12();
5 1 0 0 0
1 5 1 0 0
0 1 5 1 0
0 0 1 5 1
0 0 0 1 5
三、源程序和实验结果
1、运行结果如下:
>> test1();
f =
2 4 8 16 32 64 128 256 512 1024
k =
10
>> test2(9);
f =
2 4 8
2、源代码:
function y = text3(x)
%编写一个函数M文件,计算下面函数的值,给出标量x的值,调用该函数后,返回y的值。
if x<=0
y = sin(x);
elseif x>0&x<=3
y=x;
else y=-x+6;
end
end
运行结果如下:
>> y=text3(5)
y =
1
>> y=text3(3.14/2)
y =
1.5700
>> y=text3(-1)
y =
-0.8415
3、源代码:
function y = text4(x)
%编写一个函数M文件,返回向量x中元素的和、平均值、最大值、最小值、均方根值。
y(1)=sum(x);
y(2)=mean(x);
y(3)=max(x);
y(4)=min(x);
y(5)=sqrt(mean(x.^2));
end
运行结果如下:
(1)x=sin(0:0.01:6*pi)
>> x=sin(0:0.01:6*pi);
>> y=text4(x)
y =
-0.0002 -0.0000 1.0000 -1.0000 0.7071
(2)x=rand(1,200),
>> x=rand(1,200);
>> y=text4(x)
y =
99.3810 0.4969 0.9943 0.0099 0.5707
4、源代码:
function y = myvander(x)
%编写一个函数M文件,若给出一个向量 ,函数返回如下范德蒙矩阵
n=length(x);
y = ones(n);
for i = 2:n
y(i,:)=x.^(i-1);
end
end
运行结果如下:
>> v=myvander([2 3 4 5])
v =
1 1 1 1
2 3 4 5
4 9 16 25
8 27 64 125
5、源代码
(1)for循环
function s = text5()
%5/分别使用while和for编写命令文件,用循环语句编程计算s值:
s=0;
for n = 2:1:10
s=s+(n^3-n^2);
end
end
(2)while循环
function s=text5while()
%5、使用while编写命令文件,用循环语句编程计算s
n=2;
s=0;
while n<=10
s=s+(n^3-n^2);
n=n+1;
end
end
运行结果如下
>> text5()
ans =
2640
>> text5while()
ans =
2640
6、源代码:
function y = text6()
%6/任意一个正整数,若为偶数,则用2除之,若为奇数,则与3相乘再加上1。重复此过程,最终得到的结果为1。
i=2;
n=input('请输入一个正整数');
y(1)=n;
while n~=1
if rem(n,2)==0
n=n/2;
elseif rem(n,2)==1
n=n*3+1;
end
y(i)=n;
i=i+1;
end
end
运行结果如下:
>> y=text6()
请输入一个正整数12
y =
12 6 3 10 5 16 8 4 2 1
7、源代码:
(1)if语句
function []=text7if(x)
if x>=190
disp('很高');
elseif x>=180&x<190
disp('较高');
elseif x>=170&x<180
disp('中等');
elseif x>=160&x<170
disp('较矮');
end
end
(2)switch语句
function []=text7switch(x)
%7/用switch语句实现
switch x
case num2cell(190:300)
disp('很高');
case num2cell(180:190)
disp('较高');
case num2cell(170:180)
disp('中等');
case num2cell(160:170)
disp('较矮');
otherwise
disp('矮');
end
end
运行结果如下:
(1)if语句
>> text7if(175)
中等
>> text7if(190)
很高
(2)switch语句
>> text7switch(175)
中等
>> text7switch(170)
中等
>> text7switch(180)
较高
>> text7switch(160)
较矮
8、源代码:
function [ ] = text8( )
%UNTITLED Summary of this function goes here
% Detailed explanation goes here
a(1)=1;
a(2)=1;
i=2;
while a(i)<10000
i=i+1;
a(i)=a(i-2)+a(i-1);
end
disp(['i=',num2str(i)]);
disp(['a(i)=',num2str(a(i))]);
end
运行结果如下:
>> text8()
i=21
a(i)=10946
9、源代码:
function [] = text9( x,y )
%UNTITLED3 Summary of this function goes here
% Detailed explanation goes here
[a,b]=size(x);
[c,d]=size(y);
if a==b&&c==d&&a==c
z1=x*y;
z2=x.*y;
disp(z1);disp(z2);
elseif b==c
z1=x*y;
disp(z1);
elseif a==c&&b==d
z2=x.*y;
disp(z2);
elseif b~=c
disp('这两个矩阵不能乘');
End
end
运行结果如下:
>> x=[1 2 3];
>> y=[1 2 3 4];
>> text9(x,y)
这两个矩阵不能乘
>> x=[1 2 3;4 5 6];
>> y=[1 2 3;4 5 6];
>> text9(x,y)
1 4 9
16 25 36
>> x=[1 2 3;4 5 6;7 8 9];
>> y=[7 8 9;1 2 3;4 5 6];
>> text9(x,y)
21 27 33
57 72 87
93 117 141
7 16 27
4 10 18
28 40 54
10、源代码:
(1)for循环
function [ ] =factorialfor( )
%UNTITLED4 Summary of this function goes here
% Detailed explanation goes here
s=1;
n=1;
for n=1:1000
s=s*n;
if(s>10100) break;
end
end
disp(n);
end
(2)switch循环
function [ ] = factorialwhile( )
%UNTITLED5 Summary of this function goes here
% Detailed explanation goes here
n=1;
s=1;
while s<=10100
n=n+1;
s=s*n;
end
disp(n);
end
运行结果如下:
>> factorialfor();
8
>> factorialwhile();
8
11、源代码:
function [ ] = text10( )
%UNTITLED6 Summary of this function goes here
% Detailed explanation goes here
temp=input('请输入体温: temp =');
if temp < 36.5
disp('体温偏低');
elseif temp >= 36.5
disp('体温正常');
elseif temp > 38.0
disp('体温偏高!');
elseif temp > 39
disp('体温高!!');
end
End
运行结果如下:
>> text10();
请输入体温: temp =36.5
体温正常
>> text10();
请输入体温: temp =38
体温正常
12、源代码:
function [ ] = test12( )
%UNTITLED8 Summary of this function goes here
% Detailed explanation goes here
a=zeros(5);
for i=1:5
a(i,i)=5;
for j=1:5
if i==j+1||j==i+1
a(i,j) = 1;
end
end
end
disp(a);
end
运行结果如下:
>> text12();
5 1 0 0 0
1 5 1 0 0
0 1 5 1 0
0 0 1 5 1
0 0 0 1 5
MATLAB教程及实训实验报告班级:10级专升本学号:姓名:实验1熟悉matlab的开发环境及矩阵操作一、实验的教学目标通过本次实…
实验一matlab基本操作一实验目的熟悉matlab的安装与启动熟悉matlab用户界面熟悉matlab功能建模元素熟悉matla…
课程设计说明书(论文)题目带限数字基带传输系统的仿真课程名称Matlab通信仿真设计专业通信工程班级1203学生姓名学号指导教师设…
MATLAB高级编程与工程应用语音合成综合实验姓名班级学号日期121简单的合成音乐1请根据东方红片断的简谱和十二平均律计算出该片断…
数学实验报告学号姓名吴雪松得分实验1求解线性方程组实验内容用MATLAB求解如下线性方程组Axb其中5100A0000651000…
Matlab与机电系统仿真实验报告三班级电气121姓名李凡学号20xx06010116一实验名称Simulink建模与仿真4一实验…
Matlab仿真实验报告1实验一数字信号的FFT分析大概在第10周1实验内容及要求1离散信号的频谱分析设信号xn0001cos04…
红河学院工学院实验报告单机械工程控制基础Matlab仿真实验报告单课程名称机械工程控制基础实验姓名日期20xx126成绩年级专业2…
机电工程学院Matlab控制系统仿真实验指导书学院班级姓名学号温州大学机电工程学院制温州大学机电学院实验实训指导书实验一MATLA…
红河学院工学院实验报告单机械工程控制基础Matlab仿真实验报告单课程名称机械工程控制基础实验姓名日期成绩年级专业20xx级机械工…