【www.myl5520.com--工作报告】
实验三 MATLAB程序设计
篇一:matlab编写程序判断数组或矩阵是否有整数
2014秋2012级《MATLAB程序设计》实验报告
班级:软件C121姓名:冯杨腾学号:125692
实验三 MATLAB程序设计
一、实验目的
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 编辑器
在编辑器中输入如下命令程序:
%求小于2000且为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,观察运行结果:
f =
Columns 1 through 9
2 4 8 16 32 64 128 256 512
Column 10
1024
k =
10
(4)按上述步骤,在在编辑器中输入如下函数文件:
function f=tt(n)
%求小于任何正整数且为2的整数次幂的正整数。
%c=n(n)
%n可取任意正整数。
%2004年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),观察程序运行结果。
>> test2(9)
f =
2 4 8
ans =
2 4 8
2、编写一个函数M文件,计算下面函数的值,给出标量x的值,调用该函数后,返回y的值。
sinx,y(x)x,
x6,x00x3 x3
选择一些数据测试编写的函数。
源程序 :
function [y]=myfun(x)
if x<=0
y=sin(x);
elseif x>3
y=-x+6;
else
y=x;
end
运行结果:
>> test(0)
ans =
>> test(2)
ans =
2
>> test(5)
ans =matlab编写程序判断数组或矩阵是否有整数。
1
3、编写一个函数M文件,返回向量x中元素的和、平均值、最大值、最小值、均方根值。其中方均根值(Root Mean Square)的计算公式为:
rms并用下面数据测试你写的函数:
(1)x=sin(0:0.01:6*pi)
(2)x=rand(1,200),得到的x为200个(0,1)之间均匀分布的随
机数。
源程序:
function [sum_x,m_x,max_x,min_x,rsm_x] = myfun7(x)
sum_x=0;
a=x;
for k=a;
sum_x=sum_x+k;
n=length(x);
for i=1:n
m_x=sum_x/n;
end
end
min_x=x(1);
for t=1:n
if min_x>x(t)
min_x=x(t); end
end
max_x=x(1);
for t=1:n
if max_x<x(t)
max_x=x(t); end
end
sum_x1=0;
for t=1:n
sum_x1=sum_x1+x(t).^2; rms_x=sqrt(sum_x1/n); end
sum_x
m_x
max_x
min_x
rms_x
运行结果:
(1)
>> x=sin(0:0.01:6*pi); >> myfun7(x)
sum_x =
-2.1218e-004
m_x =
-1.1256e-007
max_x =matlab编写程序判断数组或矩阵是否有整数。
1.0000
min_x =
-1.0000
rms_x =
0.7071
2)
>> x=rand(1,200);
>> myfun7(x)
matlab实验四
篇二:matlab编写程序判断数组或矩阵是否有整数
本科实验报告
课程名称: Matlab电子信息应用
实验项目: M文件的编写
实验地点:
专业班级: 学号:
学生姓名:
指导教师:
2014年 5 月 21 日
一、实验目的
1.学习MATLAB中的关系运算和逻辑运算,掌握它们的表达形式和用法。 2.掌握MATLAB中的选择结构和循环结构。 3.学会用MATLAB进行M文件的编写和调用。
二、预备知识
1.关系和逻辑运算
关系运算符用来完成关系运算,在控制程序流程方面有着极为重要的作用。MATLAB常用的关系符有:<、>、<=小于或等于、>=大于或等于、==等于、~=不等于。
关系运算符可以用来比较两个数值,若所描述的关系成立,则结果为1,表示逻辑真,反之,若所描述的关系不成立,结果为0,表示逻辑假。
MATLAB中的逻辑运算符有&与、∣或、~非。 逻辑运算法则
2.选择结构 if语句和switch语句 if语句的一般形式如下: if A1 %表达式1 B1 %命令1
else if A2 %表达式2 B2 %命令2 else B3 %命令3 end
switch语句的一般结构如下:
switch a %读入一个语句 case A1 %情况1 B1 %命令1 case A2 B2 case .… …
other case %其余情况 Bn %最后一个命令 3.循环结构
for语句一般用于循环次数已知的情况,而while语句一般用于循环次数未知的情况。 for语句的格式为:for 变量=表达式 命令1 命令2 … end
while语句的格式为:while 表达式 命令 end
1. 实验内容与步骤
1. 创建一个矩阵,用函数all和any作用于该矩阵,比较结果。 2. 编写一个switch语句,判断输入数的奇偶性。
3. 编写一个程序画出下列分段函数所表示的曲面,并用M文件存储。
0.5457e0.75x23.75x11.5x122
fx1,x20.7575ex26x1
220.75x23.75x11.5x1
0.5457e
22
x1x211x1x21 x1x21
步骤1 打开MATLAB的M文件编辑器file/new/M-file,编写以下内容: %first.m This is my first example a=2;b=2;
x=-a:0.2:a;y=-b:0.2:b; for i=1:length(y)
for j=1:length(x) if x(j)+y(i)>1
z(i,j)=0.5457*exp(-0.75*y(i)^2-3.75*x(j)^2-1.5*x(j)); else if x(j)+y(i)<=-1
z(i,j)=0.5457*exp(-0.75*y(i)^2-3.75*x(j)^2+1.5*x(j)); else z(i,j)=0.7575*exp(-y(i)^2-6*x(j)^2); end end end end
axis([-a,a,-b,b,min(min(z)),max(max(z))]); colormap(flipud(winter));surf(x,y,z);
步骤2 选择file/save命令,将文件保存,命名为first.m。 步骤3 在command window窗口输入文件名,可看到图形。
四、练习matlab编写程序判断数组或矩阵是否有整数。
1.编写一程序计算n的阶乘。
>> jiecheng n=5 n = 5
120
2. 编写一个程序求出阶乘大于或等于99的最小整数。
99
>> bijiao ans = 120
3. 使用for函数编写一个程序实现sum(A)的功能,其中A为矩阵。
>> suma A=ones(3) A =
1 1 1 1 1 1 1 1 1 B =
3 3 3
4. 使用循环结构和向量化两种方法实现求数组的平方和平方根的计算,并计算程序运行时间。
Matlab实验三
篇三:matlab编写程序判断数组或矩阵是否有整数
2014秋2012级《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 编辑器
在编辑器中输入如下命令程序:
%求小于2000且为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可取任意正整数。 %
%2004年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的值。
sinx,y(x)x,
x6,
选择一些数据测试编写的函数。
x00x3 x3
3、编写一个函数M文件,返回向量x中元素的和、平均值、最大值、最小值、均方根值。其中方均根值(Root Mean Square)的计算公式为:
rms
并用下面数据测试你写的函数: (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文件,若给出一个向量x[x1,x2,下范德蒙矩阵。
xn],函数返回如
1x1x12n1x1
1x2
2x2
n1x2
1xn2
xn n1
xn
1111
2345
,例如在命令窗口输入>>v=myvander([2 3 4 5]),得v
49162582764125
同时生成一些数据测函数。
5、分别使用while和for编写命令文件,用循环语句编程计算s值:
s(n3n2)
n2
10
同时对编写的文件设置断点,观察变量取值的变化情况。
6、数论中一个有趣的题目:任意一个正整数,若为偶数,则用2除之,若为奇数,则与3相乘再加上1。重复此过程,最终得到的结果为1。如:
21
3105168421 63105168421
建立命令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循环命令创建下列矩阵:
5
1A0
00
1
51000151000151
000 15
>> text12();
matlab程序设计例题及答案
篇四:matlab编写程序判断数组或矩阵是否有整数
1.编写程序:计算1/3+2/5+3/7+……+10/21 法一:
s=0;
for i=1:10
s=s+i/(2*i+1);
end
s
s =
4.4096
法二:
sum((1:10)./(3:2:21))
ans =
4.4096
2.编写程序:计算1~100中即能被3整除,又能被7整除的所有数之和。
s=0;
for i=1:100
if mod(i,3)==0&&mod(i,7)==0
s=s+i;
end,end
s
s =
210
3.画出y=n!的图(1<=n<=10),阶乘的函数自己编写,禁用MATLAB自带的阶乘函数。 x=1:10;
for i=1:10
try y(i)=y(i-1)*i;
catch y(i)=1;
end,end
plot(x,y)
4
3.5
3
2.5
2
1.5
1
0.5
0x 10
612345678910
4.一个数恰好等于它的因子之和,这个数就称为完数。例如,6的因子为1,2,3,而6=1+2+3,因此6就是一个完数。编程找出2000以内的所有完数。
g=[];
for n=2:2000
s=0;
for r=1:n-1
if mod(n,r)==0
s=s+r;
end
end
if s==n
g=[g n];
end
end
g
g =6 28 496
5.编写一个函数,模拟numel函数的功能,函数中调用size函数。
function y=numelnumel(x)
m=size(x);
y=m(1)*m(2);
numelnumel([1 2 3;4 5 6])
ans =
6
6. 编写一个函数,模拟length函数的功能,函数中调用size函数。
function y=lengthlength(x)
m=size(x);
y=max(m(1),m(2));
lengthlength([1 2 3;4 5 6])
ans =
3
7.求矩阵rand(5)的所有元素和及各行平均值,各列平均值。
s=rand(5);
sum=sum(sum(s))
mean2=mean(s,2)
mean1=mean(s)
sum =
13.8469
mean2 =
0.5583
0.5536
0.6554
0.4931
0.5090
mean1 =
0.6331 0.5006 0.6487 0.7124 0.2745
8.编程判断1001,1003,1007,1009,1011为素数,若不是,输出其约数。
function sushupd(x)
s=fix(sqrt(x));
p=1;
for i=2:s
if mod(x,i)==0
p=0;
break
end
end
if p==1
disp('该数是素数')
else g=[];
for i=1:x
if mod(x,i)==0
g=[g i];
end
end
disp('该数不是素数')
g
end
是否
sushupd(1001)
该数不是素数
g =
1 7 11 13 77 91 143 1001
>> sushupd(1003)
该数不是素数
g =
1 17 59 1003
>> sushupd(1007)
该数不是素数
g =
1 19 53 1007
>> sushupd(1009)
该数是素数
>> sushupd(1011)
该数不是素数
g =
1 3 337 1011
9.将[1563 35 4123 65 121233 356 57;
1223543 43 23 132 345 45 31]从小到大排序,排成一列,禁用sort函数。
s=[1563 35 4123 65 121233 356 57;1223543 43 23 132 345 45 31]; s=[s(1,:) s(2,:)];
for i=1:length(s)-1
for i=1:length(s)-1
if s(i)>s(i+1)
a=s(i);