文档库 最新最全的文档下载
当前位置:文档库 › 实验五 M文件和MATLAB程序设计

实验五 M文件和MATLAB程序设计

实验五  M文件和MATLAB程序设计
实验五  M文件和MATLAB程序设计

实验五 M文件和MATLAB程序设计

一、实验目的

matlab作为一种高级计算机语言,不仅可以命令行方式完成操作,也具有数据结构、控制流、输入输出等能力,本次实验通过熟悉和掌握m文件的建立与使用方法,以及函数与控制程序流程语句的使用,使学生具备一定的编程和程序调试能力。

1.掌握M文件的使用方法。

2.掌握if语句和switch语句的使用

3. 掌握循环语句的使用

4. 通过练习理解MATLAB编程方法。

二、实验原理

1.m文件

用matlab语言编写的程序,称为m文件。M文件根据调用方式的不同分为两类,命令文件(Script file)和函数文件(Function file)。区别?

2.程序控制结构

1)顺序结构

2)选择结构

(1)if语句a) 单分支if语句b) 双分支if语句c) 多分支if语句

(2)switch 语句

(3)try语句

3)循环结构

(1)for 语句

(2)while语句

(3)break语句、continue语句、return使用,区别?

3.函数文件

function 输出形参表=函数名(输入形参表)

注释说明部分

函数体语句

三、实验要求

1.首先上机练习PPT中各种流程控制语句的有关实例。

2.然后上机练习下面的实验习题。

四、实验习题

1.数论中一个有趣的题目:任意一个正整数,若为偶数,则用2除之,若为奇数,则与3相乘再加上1。重复此过程,最终得到的结果为1。如:

2→1

3→10→5→16→8→4→2→1

6→3→10→5→16→8→4→2→1

运行下面的程序,按程序提示输入n=1,2,3,5,7等数来验证这一结论。

%classic "3n+1" problem from number theory.

while 1

n=input('Enter n,negative quits:');

if n<=0

break

end

a=n;

while n>1

if rem(n,2)==0

n=n/2;

else

n=3*n+1;

end

a=[a,n];

end

a

end

Enter n,negative quits:3

a =

3 10 5 16 8

4 2 1

2. 编程求满足∑=>m i i 1100002的最小m 值。

a=0;

i=1; while (a<10000) a=a+pow2(i); i=i+1; end m=i-1; m 13 3. 编写一个函数,计算下面函数的值,给出x 的值,调用该函数后,返回y 的值。

function [y]=myfun1(x)

??

???>+-≤<≤=3,630,

0,sin )(x x x x x x x y

选择一些数据测试你编写的函数。 function y=myfun1(x) if x<=0 y=sin(x);

elseif x>3 y=-x+6; end 运行结果: >> y=myfun1(-pi/2) y = -1 >> y=myfun1(0)y = 0 >> y=myfun1(2) y = 2 >> y=myfun1(4) y = 2

4. 用如下迭代公式求a ,a 的值分别为:3,17,113。迭代的终止条件为

5n 1n 10x x -+≤-,迭代初值0.1x 0=,迭代次数不超过

100次。分别对迭代结果和准确值进行比较,并统计迭代次数。迭代公式:1

1122--++=n n n x a x x

function [x, n]=sqrt_a(a) x=1.0; for k=1:100 m=x; x=x/2+a/(2*x); if abs(x-m)<=10^(-5) break end end x; n=k; s=(x-sqrt(a)); if s<=10^(-5) disp('正确'); else disp('错误'); end 下面调用举例:

运行结果:

>> [x ,n]=sqrt_a(3) 正确

x = 1.7321 n = 5 >> [x, n]=sqrt_a(17) 正确 x = 4.1231 n =

正确

x =

10.6301

n =

8

5.定义一个函数文件,求给定复数的指数、对数、正弦和余弦,并在命令文件中调用该函数文件。

程序设计:

function [e ln s c]=num(x)

e=exp(x)

ln=log(x)

s=sin(x)

c=cos(x)

end

运行结果:

>> num(5i)

e =

0.2837 - 0.9589i

ln =

1.6094 + 1.5708i

s =

0 +74.2032i

c =

74.2099

ans =

0.2837 - 0.9589i

6. 设 f(x)=01.011.01

)3()2(4

2+++--x x ,编写一个MATLAB 函数文件fx.m ,使得调用f(x)时,x 可用矩阵代入,得出的f(x)为同阶矩阵。

程序设计:

函数文件fx.m:

function A=fx(x)

A=1./((x-2).^2+0.1)+1./(((x-3).^4)+0.01)

end

调用fx.m 的命令文件:

>> A=fx([1 2;2 3;4 3])

运行结果:

A =

0.9716 10.9901

10.9901 100.9091

1.2340 100.9091

7. 已知y=)

20()30()40(f f f 当f(n)=n+10ln(n 2+5)时,求y 的值。

程序设计:

函数文件fn.m:

function x=fn(n)

x=n+10*log(n^2+5)

end

调用fn.m 的命令:

y=fn(40)/(fn(30)+fn(20))

运行结果:

y =

0.6390

8.将下列脚本式m 文件改写成函数式m 文件:

(1)输入一个字符,若为大写字母,则输出其对应的小写字母;若为小写字母,则输出其对应的大写字母;若为数字字符则输出其对应的数值,若为其他字符则原样输出。

c=input('请输入一个字符','s'); %a 是字符,'a'是字符串

if c>='A' & c<='Z'

disp(setstr(abs(c)+abs('a')-abs('A'))); %加32

elseif c>='a'& c<='z'

disp(setstr(abs(c)- (abs('a')-abs('A'))));

elseif c>='0'& c<='9'

disp(abs(c)-abs('0'));

else

disp(c);

end %必须与if 配对使用

编写一个函数式m 文件,实现程序的功能

c=input('请输入一个字符','s');

Function M=disp(c);

if c>='A' & c<='Z'

M=setstr(abs(c)+abs('a')-abs('A'))

elseif c>='a'& c<='z'

M=setstr(abs(c)- (abs('a')-abs('A')))

elseif c>='0'& c<='9'

M=abs(c)-abs('0')

end

(2)某商场对顾客所购买的商品实行打折销售,标准如下(商品价格用price 来表示):

price<200 没有折扣

200≤price<500 2%折扣

500≤price<1000 5%折扣

1000≤price<2500 10%折扣

2500≤price<5000 25%折扣

5000≤price 50%折扣

输入所售商品的价格,求其实际销售价格。

程序如下:

price=input('请输入商品价格');

switch fix(price/100) %向零的方向取整

case {0,1} %价格小于200

rate=0;

case {2,3,4} %价格大于等于200但小于500

rate=2/100;

case num2cell(5:9) %价格大于等于500但小于1000

%为简便采用元胞数组

rate=5/100;

case num2cell(10:24) %价格大于等于1000但小于2500

rate=10/100;

case num2cell(25:49) %价格大于等于2500但小于5000

rate=25/100;

otherwise %价格大于等于5000

rate=50/100;

end

price=price*(1-rate) %输出商品实际销售价格

编写一个函数式m文件,计算顾客实际付款数目。

Function price=f(rate)

switch fix(price/100)

case {0,1}

rate=0;

case {2,3,4}

rate=2/100;

case num2cell(5:9)

rate=5/100;

case num2cell(10:24)

rate=10/100;

case num2cell(25:49)

rate=25/100;

otherwise

rate=50/100;

Price=price*(1-rate)

end

9.一个三位整数各位数字的立方和等于该数本身则称该数为水仙花数。输出全部水仙花数。

程序如下:

? for m=100:999

m1=fix(m/100); %求m的百位数字

? m2=fix((m-m1*100)/10); %求m的十位数字

? m3=m-m1*100-m2*10; %求m的个位数字

? if m==m1*m1*m1+m2*m2*m2+m3*m3*m3

? disp(m)

? end

?end

编写一个函数式m文件,来判断一个三位数是不是水仙花数。

Function m=f(Mn)

?for m=100:999

m1=fix(m/100);

? m2=fix((m-m1*100)/10);

? m3=m-m1*100-m2*10;

? if m==m1*m1*m1+m2*m2*m2+m3*m3*m3

? disp(m)

? end

?end

10.从键盘输入若干个数,当输入0时结束输入,求这些数的平均值和它们的和。程序如下:

sum=0; %用于存放和

n=0; %用于统计输入的数的个数

val=input(‘Enter a number :’); %在循环体外初始

while (val~=0)

sum=sum+val;

n=n+1;

val=input(‘Enter a number :’); 若无此句只能输入一个数end

if (n > 0)

sum

mean=sum/n

End

改写成M文件

Function mean=fn(n)

sum=0;

n=0;

val=input(‘Enter a number :’);

while (val~=0)

sum=sum+val;

n=n+1;

val=input(‘Enter a number :’);

if (n > 0)

sum

mean=sum/n

end

五、实验心得

通过本次实验,我了解了MATLAB的工作模式和M文件的构成规则,了解了命令M文件和函数M文件的异同。会MATLAB的M文件的创建与修改,会使用函数句柄调用函数,会运用顺序结构、循环结构和分支结构进行计算机编程。会控制MATLAB的程序流,熟悉了应用程序设计的基本步骤。能对文件进行简单操作,会调试和优化所设计的程序。对应用程序接口的设计也有所了解。MATLAB语言被称为第四代编程语言,程序简洁、可读性很强,而且调试十分容易。它是MATLAB重要组成部分。通过这次试验我已经对MATLAB的工作模式有一个大致的了解,并掌握如何创建M文件,包括命令文件和函数文件。熟练地掌握MATLAB的程序设计流程和程序设计的基本结构,并能初步设计一些简单的能解决实际问题的程序。

实验成绩:________________

实验日期和地点:东港学院

实验指导教师:宁伟

实验4函数文件

实验四 函数文件 1.定义一个函数文件,求给定复数的指数、对数、正弦和余弦,并在命令文件中调用该函数文件。 函数文件: function [e,ln,s,c]=plural(x) e=exp(x); ln=log(x); s=sin(x); c=cos(x); End 命令文件: x=input('请输入一个复数:'); [e,ln,s,c]=plural(x); e ln s c 运行结果: 请输入一个复数:3+4i e = -13.1288 -15.2008i ln = 1.6094 + 0.9273i s = 3.8537 -27.0168i c = -27.0349 - 3.8512i 2.一物理系统可用下列方程组来表示: ? ?????????????=??????????????????????????----g g m m N N a a m m m m 2121212111001cos 000sin 00cos 0sin 0sin cos θθ θθ θθ 从键盘输入m 1、m 2和θ的值,求N a a 121、、和N 2的值。其中g 取9.8,输入 θ时以角度为单位。 函数文件: function [a1,a2,N1,N2]=physis(m1,m2,t) g=9.8; A=[m1*cos(t*pi/180),-m1,-sin(t*pi/180),0;... m1*sin(t*pi/180),0,cos(t*pi/180),0;... 0,m2,-sin(t*pi/180),0;... 0,0,-cos(t*pi/180),1]; B=[0;m1*g;0;m2*g];

实验二 Matlab程序设计基本方法1

实验二Matlab程序设计基本方法 覃照乘自092 电气工程学院 一、实验目的: 1、熟悉MATLAB 程序编辑与设计环境 2、掌握各种编程语句语法规则及程序设计方法 3、函数文件的编写和设计 4、了解和熟悉跨空间变量传递和赋值 二、实验基本知识: ◆for循环结构 语法:for i=初值:增量:终值 语句1 …… 语句n end 说明:1.i=初值:终值,则增量为1。 2.初值、增量、终值可正可负,可以是整数,也可以是小数,只须符合数学逻辑。 ◆while 循环结构 语法:while 逻辑表达式 循环体语句 end 说明:1、whiIe结构依据逻辑表达式的值判断是否执行循环体语勾。若表达式的值为真,执行循环体语句一次、在反复执行时,每次都要进行判断。若表达 式的值为假,则程序执行end之后的语句。 2、为了避免因逻辑上的失误,而陷入死循环,建议在循环体语句的适当位 置加break语句、以便程序能正常执行。(执行循环体的次数不确定; 每一次执行循环体后,一定会改变while后面所跟关系式的值。) 3、while循环也可以嵌套、其结构如下:

while逻辑表达式1 循环体语句1 while逻辑表达式2 循环体语句2 end 循环体语句3 end ◆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。 ◆switch-case结构 语法:switch表达式 case常量表达式1 语句组1 case常量表达式2 语句组2 …… otherwise 语句组n end

实验五 M文件和MATLAB程序设计

实验五 M文件和MATLAB程序设计 一、实验目的 matlab作为一种高级计算机语言,不仅可以命令行方式完成操作,也具有数据结构、控制流、输入输出等能力,本次实验通过熟悉和掌握m文件的建立与使用方法,以及函数与控制程序流程语句的使用,使学生具备一定的编程和程序调试能力。 1.掌握M文件的使用方法。 2.掌握if语句和switch语句的使用 3. 掌握循环语句的使用 4. 通过练习理解MATLAB编程方法。 二、实验原理 1.m文件 用matlab语言编写的程序,称为m文件。M文件根据调用方式的不同分为两类,命令文件(Script file)和函数文件(Function file)。区别? 2.程序控制结构 1)顺序结构 2)选择结构 (1)if语句a) 单分支if语句b) 双分支if语句c) 多分支if语句 (2)switch 语句 (3)try语句 3)循环结构 (1)for 语句 (2)while语句 (3)break语句、continue语句、return使用,区别? 3.函数文件 function 输出形参表=函数名(输入形参表) 注释说明部分 函数体语句 三、实验要求 1.首先上机练习PPT中各种流程控制语句的有关实例。 2.然后上机练习下面的实验习题。 四、实验习题 1.数论中一个有趣的题目:任意一个正整数,若为偶数,则用2除之,若为奇数,则与3相乘再加上1。重复此过程,最终得到的结果为1。如: 2→1 3→10→5→16→8→4→2→1

6→3→10→5→16→8→4→2→1 运行下面的程序,按程序提示输入n=1,2,3,5,7等数来验证这一结论。 %classic "3n+1" problem from number theory. while 1 n=input('Enter n,negative quits:'); if n<=0 break end a=n; while n>1 if rem(n,2)==0 n=n/2; else n=3*n+1; end a=[a,n]; end a end Enter n,negative quits:3 a = 3 10 5 16 8 4 2 1 2. 编程求满足∑=>m i i 1100002的最小m 值。 a=0; i=1; while (a<10000) a=a+pow2(i); i=i+1; end m=i-1; m 13 3. 编写一个函数,计算下面函数的值,给出x 的值,调用该函数后,返回y 的值。 function [y]=myfun1(x) ?? ???>+-≤<≤=3,630, 0,sin )(x x x x x x x y 选择一些数据测试你编写的函数。 function y=myfun1(x) if x<=0 y=sin(x);

matlab实验五答案1

实验五 1、编写程序,该程序在同一窗口中绘制函数在 []0,2π之间的正弦曲线和余弦曲线,步长 为200/π,线宽为2个象素,正弦曲线设置为蓝色实线,余弦曲线颜色设置为红色虚线,两条曲线交点处,用红色星号标记并标注sin(x)=cos(x);通过函数方式在生成的图形中添加注释,至少应包括:标题,文本注释,图例和坐标轴标注。%x=linspace(0,2*pi,1000);x=[0:pi/200:2*pi]sinx =sin(x);cosx =cos(x); k=find(abs(sinx-cosx)<1e-2);x1=x(k); plot(x,sinx,'LineWidth',2) hold on ,plot(x,cosx,'r:','LineWidth',2)hold on ,plot(x1,sin(x1),'r*')xlabel('x:(0-2\pi)'); ylabel('y:sin(x)/cos(x)'); title('正弦-余弦曲线'); text(x1+0.1,sin(x1),'sin(x)=cos(x)');legend('sin(x)','cos(x)'); 1 2 34 5 6 7 x:(0-2π) y :s i n (x )/c o s (x ) 正弦-余弦曲线 2、绘制图像:双曲抛物面:22 x y z =- ,1616x -<<,44y -<<,并对绘制的双曲抛物面尝试进行视点控制。 [X,Y]=meshgrid(-16:0.4:16,-4:0.1:4);Z =X.^2/16-Y.^2/4; subplot(1,3,1),plot3(X,Y,Z),view(0,180),title('azimuth =0,elevation =180'); subplot(1,3,2),plot3(X,Y,Z),view(-37.5,-30),title('azimuth =

MATLAB实验五 函数文件

MATLAB实验报告 学院:光电学院 班级:073-1 姓名:刘颖 学号:200713503117

实验五 函数文件 1.定义一个函数文件,求给定复数的指数、对数、正弦和余弦,并在命令文件中调用该函数文件。 程序设计: function [e ln s c]=num(x) e=exp(x) ln=log(x) s=sin(x) c=cos(x) end 运行结果: >> num(5i) e = 0.2837 - 0.9589i ln = 1.6094 + 1.5708i s = 0 +74.2032i c = 74.2099 ans = 0.2837 - 0.9589i 2.一物理系统可用下列方程组来表示: ??? ? ??? ???????= ?????? ??? ??? ???????????? ??----g g m m N N a a m m m m 2121212 111001cos 0 0sin 00cos 0 sin 0sin cos θ θθ θθθ 从键盘输入 m 1 、 m 2 和θ的值,求 N a a 121、、和 N 2 的值。其中g 取9.8,输入θ时以角度为单位。 程序设计: 函数文件in.m: function [a1,a2,N1,N2]=in(m1,m2,t) g=9.8; A=[m1*cos(t) -m1 -sin(t) 0;m1*sin(t) 0 cos(t) 0;0 m2 -sin(t) 0;0 0 -cos(t) 1]; C=[0;m1*g;0;m2*g]; B=inv(A)*C; a1=B(1); a2=B(2); N1=B(3); N2=B(4); end 调用in.m 的命令文件: >> m1=1;m2=2;t=30*pi/180; >> [a1,a2,N1,N2]=in(m1,m2,t) 运行结果: a1 = 6.5333 a2 = 1.8860 N1 = 7.5440 N2 = 26.1333 4.设 f(x)= 01 .01 1 .01 ) 3() 2(4 2 +++--x x , 编写一个MATLAB 函数文件fx.m ,使得调用f(x)时,x 可用矩阵代入,得出的f(x)为同阶矩阵。 程序设计: 函数文件fx.m: function A=fx(x) A=1./((x-2).^2+0.1)+1./(((x-3).^4)+0.01) end 调用fx.m 的命令文件: >> A=fx([1 2;2 3;4 3]) 运行结果: A = 0.9716 10.9901 10.9901 100.9091 1.2340 100.9091 5.已知y= ) 20()30() 40(f f f + (1)当f(n)=n+10ln(n 2+5)时,求y 的值。

实验3MATLAB程序设计

1,编写M 函数实现求一个数是否为素数,再编写一主程序(脚本文件),要求通过键盘输入一个整数,然后调用判断素数函数,从而确定它是否素数。 x=input('请输入一个整数x:'); if myprime(x) disp('您输入的整数x是一个素数。') else disp('您输入的数x不是一个素数。') end function y=myprime(x) y=1; for i=2:fix(sqrt(x)) if mod(x,i)==0 y=0; end end 2,编写M 函数统计一数值中零的个数,然后编写脚本文件,实现统计从1—2007 中零的总个数。 function num=number0(a) %统计十进制数值中0的个数 sa=num2str(a);%将数值装化为字符串 num=length(find(sa=='0'));% ));%求取字符串中'0’的个数 y=0;

for a=1:2006 num=number0(a); y=num+y; end disp(y) 504 3,编写程序计算x∈[-3,3],字长0.01:并画出曲线x = -3:0.01:3; y=zeros(size(x)); for i = 1:length(x) if -3<= x(i)& x(i)<=-1 y(i)=(-x(i).^2-4*x(i)-3)/ 2; elseif -1<= x(i) & x(i)<=1 y(i)=-x(i).^2+1; elseif 1<=x(:,i)<=3 y(i)=(-x(i).^2+4*x(i)-3)/2; end end plot(x,y) -3-2-10123

实验5 Matlab程序设计1

实验5 Matlab 程序设计1 实验目的: 1、 掌握建立和执行M 文件的方法; 2、 掌握实现选择结构的方法; 3、 掌握实现循环结构的方法。 实验内容: 1. 从键盘输入一个4位整数,按如下规则加密后输出。加密规则:每位数字都加上7,然 后用和除以10的余数取代该数字;再把第一位与第三位交换,第二位与第四位交换。 2. 求分段函数的值。 ,x x x x y x x x x x x x ?+- <≠-?=-+ ≤<≠≠??-- ?2226035605231且且及其他 用if 语句实现,分别输出x=-5,-3,0,1,2,2.5,3,5时的y 值。请输入x 的值 x=input('请输入x 的值'); if x<0&x~=-3 y=x*x+x-6; elseif 0<=x&x<5&x~=2&x~=3 y=x*x-5*x+6; else y=x*x-x-1; end y

second 请输入x的值-5 y = 14 second 请输入x的值-3 y = 11 >> second 请输入x的值0 y = 6 >> second 请输入x的值1

y = 2 >> second 请输入x的值2 y = 1 >> second 请输入x的值2.5 y = -0.2500 >> second 请输入x的值3

5 >> second 请输入x的值5 y = 19 >> 3.输入一个百分制成绩,要求输出成绩等级A、B、C、D、E,其中90~100分为A,80~89 分为B,70~79分为C,60~69分为D,60分以下为E。 要求: (1)分别用if语句和swich语句实现。 (2)grade=input('input grade:'); (3)if grade<=100&grade>=90 (4)level='A'; (5)elseif grade<=89&grade>80 (6)level='B'; (7)elseif 70<=grade&grade<=79

实验五.函数文件的编写

闽江学院电子系 实验报告 学生姓名:班级:学号:3142731 课程:函数文件的编写 一、(填实验几,例:试验一):实验五 二、实验地点:实验楼A210 实验目的: 1.掌握函数文件的定义方法,函数头的写法; 2.掌握调用函数文件的方法,了解函数文件的嵌套调用; 3.熟悉MATLAB函数文件的特点。 三、实验内容: 1、定义一个函数文件lifang.m,用于计算一个立方体的表面积和体积。在命令窗口中调用它。函数文件: 命令窗口:

2、当n分别取100、1000、10000时,求下列各式的值: (1) 2 2232 1111 1236 n π ??++++= ? ?? (2) ()() ()() 22 224466 133******** n n n n π ?? ? ??? ???????? = ? ????? ? ????-+ ???????? ?? 要求用函数文件的定义和调用来实现。(1)函数文件的定义: 函数文件的调用: 命令窗口:

(2)函数文件的定义: 函数文件的调用: 命令窗口: 3、利用函数文件,实现极坐标(,)ρθ与直角坐标(,)x y 之间的转换,并通过函数调用加以验证。 直角坐标转化为极坐标函数定义: 极坐标转化为直角坐标函数定义:

函数文件的调用: 命令窗口: 4、利用预定义变量nargin和nargout,实现以下功能的函数:若输入只有一个参数,输出以 该参数为半径的球的体积;若输入有两个参数,输出分别以该参数为底面半径和高的圆柱体积;若输入有三个参数,输出分别以该参数为三条边的长方体的体积;若输入参数多

刘卫国版MATLAB程序设计与应用课后实验六八九

实验六 高层绘图操作 %第一题: 程序代码如下: x=linspace(0,2*pi,101); y=(0.5+3*sin(x)./(1+x.^2)).*cos(x); plot(x,y) 01234567 -1 -0.5 0.5 1 1.5 %第二题: %(1) 程序代码如下: x=linspace(-2*pi,2*pi,100); y1=x.^2; y2=cos(2*x); y3=y1.*y2; plot(x,y1,'b-',x,y2,'r:',x,y3,'y--'); text(4,16,'\leftarrow y1=x^2'); text(6*pi/4,-1,'\downarrow y2=cos(2*x)'); text(-1.5*pi,-2.25*pi*pi,'\uparrow y3=y1*y2');

-8 -6 -4 -2 2 4 6 8 -30-20 -10 10 20 30 40 %(2) 程序代码如下: x=linspace(-2*pi,2*pi,100); y1=x.^2; y2=cos(2*x); y3=y1.*y2; subplot(1,3,1);%分区 plot(x,y1); title('y1=x^2');%设置标题 subplot(1,3,2); plot(x,y2); title('y2=cos(2*x)'); subplot(1,3,3); plot(x,y3); title('y3=x^2*cos(2*x)');

-10 10 0510 15202530 35 40y1=x 2 -10 10 -1-0.8 -0.6 -0.4-0.200.20.4 0.6 0.8 1y2=cos(2*x) -10 10 -30-20 -10 10 20 30 40 y3=x 2*cos(2*x) %(3) 程序代码如下: x=linspace(-2*pi,2*pi,20); y1=x.^2; subplot(2,2,1);%分区 bar(x,y1); title('y1=x^2的条形图');%设置标题 subplot(2,2,2); stairs(x,y1); title('y1=x^2的阶梯图'); subplot(2,2,3); stem(x,y1); title('y1=x^2的杆图'); subplot(2,2,4); fill(x,y1,'r');%如果少了'r'则会出错 title('y1=x^2的填充图'); %其他的函数照样做。

MATLAB程序设计实验报告

MATLAB 程序设计实验报告 一、实验目的 1. 通过实验熟悉MATLAB 仿真软件的使用方法; 2. 掌握用MATLAB 对连续信号时域分析、频域分析和s 域分析的方法,利用绘图命令绘制出典型信号的波形,了解这些信号的基本特征; 3. 掌握用MATLAB 对离散信号时域分析、频域分析和z 域分析的方法,利用绘图命令绘制出典型信号的波形,了解这些信号的基本特征; 4. 通过绘制信号运算结果的波形,了解这些信号运算对信号所起的作用。 二、实验设备 1. 计算机 : 2. MATLAB R2007a 仿真软件 三、实验原理 对系统的时域分析 信号的时域运算包括信号的相加、相乘,信号的时域变换包括信号的平移、反折、倒相及信号的尺度变换。 (1)信号的相加和相乘:已知信号)(1t f 和)(2t f ,信号相加和相乘记为 )()(1t f t f =)(2t f +;)()(1 t f t f =)(2t f *。 (2)信号的微分和积分:对于连续时间信号,其微分运算是用diff 函数来完成的,其语句格式为:diff(function,’variable’,n),其中function 表示需要进行求导运算的信号,或者被赋值的符号表达式;variable 为求导运算的独立变量;n 为求导的阶数,默认值为求一阶导数。连续信号的积分运算用int 函数来完成,语句格式为:diff(function,’variable’,a,b),其中function 表示需要进行被积信号,或者被赋值的符号表达式;variable 为求导运算的独立变量;a,b 为积分上、下限,a 和b 省略时为求不定积分。 (3)信号的平移、翻转和尺度变换 信号的平移包含信号的左移与右移,信号的翻转包含信号的倒相与折叠,平移和翻转信号不会改变信号)(t f 的面积和能量。信号的尺度变换是对信号)(t f 在时间轴上的变化,可使信号压缩或扩展。)(at f 将原波形压缩a 倍,)/(a t f 将原波形扩大a 倍。 ¥ 对系统频率特性的分析

实验五 函数文件的编写

闽 江 学 院 电 子 系 实 验 报 告 学生姓名: 班级: 学 号: 课程:MATLAB 程序设计教程 一、实验题目:函数文件的编写 二、实验地点:A210 三、实验目的: 1、掌握函数文件的定义方法,函数头的写法; 2、掌握调用函数文件的方法,了解函数文件的嵌套调用; 3、熟悉MATLAB 函数文件的特点。 四、实验内容: 1、定义一个函数文件lifang.m ,用于计算一个立方体的表面积和体积。在命令窗口中调用它。 2、当n 分别取100、1000、10000时,求下列各式的值: (1)2223211111236n π??++++= ??? (2)()()( )()2222446613355721212n n n n π??????????????= ? ????? ? ????-+?????????? 要求用函数文件的定义和调用来实现。 3、利用函数文件,实现极坐标(,)ρθ与直角坐标(,)x y 之间的转换,并通过函数调用加以验证。 4、利用预定义变量nargin 和nargout ,实现以下功能的函数:若输入只有一个参数,输出以该参数为半径的球的体积;若输入有两个参数,输出分别以该参数为底面半径和高的圆柱体积;若输入有三个参数,输出分别以该参数为三 条边的长方体的体积;若输入参数多于三个,则报错。 5、 先用函数的递归调用定义一个函数文件求1n m i i =∑,然后调用该函数文件求10050102111 1k k k k k k ===++∑∑∑。

五、实验环境(使用的软硬件):Matlab6.5 六、实验步骤及操作: 1.计算立方体体积 函数文件lifang.m 2求函数值 (1)

Matlab程序设计实验报告

实验七Matlab 程序设计 实验目的: 1、掌握建立和执行M 文件的方法; 2、掌握实现选择结构的方法; 3、掌握实现循环结构的方法。 实验内容: 1. 编写用 5 次多项式拟合函数y=sin(x), x [0, 2 ]的脚本M 文件,要求绘图观察拟合的效果。 function shiyan1 x=0:0.5:2*pi y=sin(x) p=polyfit(x,y,5) x1=0:0.2:2*pi y1=polyval(p,x1) plot(x,y, 'b' ,x1,y1, '*r' x =

Columns 1 through 9 0 0.5000 1.0000 1.5000 2.0000 2.5000 3.0000 3.5000 4.0000 Columns 10 through 13 4.5000 5.0000 5.5000 6.0000 y = Columns 1 through 9 0 0.4794 0.8415 0.9975 0.9093 0.5985 0.1411 -0.3508 -0.7568 Columns 10 through 13 -0.9775 -0.9589 -0.7055 -0.2794 p = -0.0056 0.0881 -0.3967 0.2671 0.8902 0.0029 x1 = Columns 1 through 10 0 0.2000 0.4000 0.6000 0.8000 1.0000 1.2000 1.4000 1.6000 1.8000 Columns 11 through 20

2. 2.2000 2.4000 2.6000 2.8000 3.0000 3.2000 3.4000 3.6000 1.8001 Columns 21 through 30 4.0 4.2000 4.4000 4.6000 4.8000 5.0000 5.2000 5.4000 5.6000 5.8000 Columns 31 through 32 6.0 6.2000 y1 = Columns 1 through 10 0.29 0.1886 0.3786 0.5585 0.7172 0.8461 0.9391 0.9926 1.0048 0.9761 Columns 11 through 20 0.9083 0.8048 0.6701 0.5098 0.3301 0.1381 -0.0590 -0.2538 -0.4389 -0.6073 Columns 21 through 30 -0.7524 -0.8685 -0.9505 -0.9949 -0.9991 -0.9626 -0.8863 -0.7732 -0.6288 -0.4606 Columns 31 through 32

(完整版)Matlab实验5选择结构程序结构

实验五、选择与循环结构 一、实验目的: 1、 掌握建立和执行M 文件的方法。 2、 掌握利用if 语句实现选择结构的方法。 3、 掌握利用switch 语句实现多分支选择结构的方法。 4、 掌握try 语句的使用。 5、 掌握利用for 语句实现循环结构的方法。 6、 掌握利用while 语句实现循环结构的方法。 7、 熟悉利用向量运算来代替循环的操作方法。 二、实验内容: 1、 列分段函数的值。 ?? ???--≠≠<≤+--≠<-+=其他且且,632,100,6530,6222x x x x x x x x x x x y 要求: (1) 用if 语句实现,分别输出x =-0.5,-3.0,1.0,2.0,2.5,3.0,5.0时的y 值。 提示:x 的值从键盘输入,可以是向量。 %homework_5_1_1.m x=input('请输入x 的值:x='); if (x<0 & x~=-3) y= x.*x + x - 6 elseif (x>=0 & x<10 & x~=2 & x~=3) y=x.*x-5.*x+6 else y=x.*x-x-6 end >> homework_5_1 请输入x 的值:x=[-0.5 -3.0 1.0 2.0 2.5 3.0 5.0] y = -5.2500 6.0000 -6.0000 -4.0000 -2.2500 0 14.0000 (2) 用逻辑表达式实现上述函数。 %homework_5_1_2.m x=input('请输入x 的值:x=') y=(x<0 & x~=-3).*(x.*x+x-6)... +(x>=0 & x<10 &x~=2 &x~=3).*(x.*x-5.*x+6)... +(x>=10 | x==-3 | x==3 | x==2).*(x.*x-x-6) >> homework_5_1_2 请输入x=[-0.5 -3.0 1.0 2.0 2.5 3.0 5.0] x = -0.5000 -3.0000 1.0000 2.0000 2.5000 3.0000 5.0000 y = -6.2500 6.0000 2.0000 -4.0000 -0.2500 0 6.0000

实验五--M文件和MATLAB程序设计

实验五--M文件和MATLAB程序设计

实验五 M文件和MATLAB程序设计 一、实验目的 matlab作为一种高级计算机语言,不仅可以命令行方式完成操作,也具有数据结构、控制流、输入输出等能力,本次实验通过熟悉和掌握m 文件的建立与使用方法,以及函数与控制程序流程语句的使用,使学生具备一定的编程和程序调试能力。 1.掌握M文件的使用方法。 2.掌握if语句和switch语句的使用 3. 掌握循环语句的使用 4. 通过练习理解MATLAB编程方法。 二、实验原理 1.m文件 用matlab语言编写的程序,称为m文件。M文件根据调用方式的不同分为两类,命令文件(Script file)和函数文件(Function file)。区别? 2.程序控制结构 1)顺序结构 2)选择结构 (1)if语句a) 单分支if语句b) 双分

支if语句c) 多分支if语句 (2)switch 语句 (3)try语句 3)循环结构 (1)for 语句 (2)while语句 (3)break语句、continue语句、return使用,区别? 3.函数文件 function 输出形参表=函数名(输入形参表) 注释说明部分 函数体语句 三、实验要求 1.首先上机练习PPT中各种流程控制语句的有关实例。 2.然后上机练习下面的实验习题。 四、实验习题 1.数论中一个有趣的题目:任意一个正整数,若为偶数,则用2除之,若为奇数,则与3相乘再加上1。重复此过程,最终得到的结果为1。如:

3→10→5→16→8→4→2→1 6→3→10→5→16→8→4→2→1 运行下面的程序,按程序提示输入n=1,2,3,5,7等数来验证这一结论。 %classic "3n+1" problem from number theory. while 1 n=input('Enter n,negative quits:'); if n<=0 break end a=n; while n>1 if rem(n,2)==0 n=n/2; else n=3*n+1; end a=[a,n]; end a

MATLAB程序设计及经典例题解析3

MATLAB程序设计 用MATLAB语言编写的程序,称为M文件。M文件可以根据调用方式的不同分为两类:命令文件(Script File)和函数文件(Function File)。 例3-1 分别建立命令文件和函数文件,将华氏温度f转换为摄氏温度c。 程序1:首先建立命令文件并以文件名f2c.m存盘。 clear; %清除工作空间中的变量 f=input('Input Fahrenheit temperature:'); c=5*(f-32)/9 然后在MATLAB的命令窗口中输入f2c,将会执行该命令文件,执行情况为: Input Fahrenheit temperature:73 c =22.7778 程序2:首先建立函数文件f2c.m。 function c=f2c(f) c=5*(f-32)/9 然后在MATLAB的命令窗口调用该函数文件。 clear; y=input('Input Fahrenheit temperature:'); x=f2c(y) 输出情况为: Input Fahrenheit temperature:70 c =21.1111 x =21.1111 3.1.2 M文件的建立与打开 M文件是一个文本文件,它可以用任何编辑程序来建立和编辑,而一般常用且最为方便的是使用MATLAB提供的文本编辑器。

1.建立新的M文件 为建立新的M文件,启动MATLAB文本编辑器有3种方法: (1) 菜单操作。从MATLAB主窗口的File菜单中选择New菜单项,再选择M-file命令,屏幕上将出现MATLAB 文本编辑器窗口。 (2) 命令操作。在MATLAB命令窗口输入命令edit,启动MATLAB文本编辑器后,输入M文件的内容并存盘。 (3) 命令按钮操作。单击MATLAB主窗口工具栏上的New M-File命令按钮,启动MATLAB文本编辑器后,输入M文件的内容并存盘。 2.打开已有的M文件 打开已有的M文件,也有3种方法: (1) 菜单操作。从MATLAB主窗口的File菜单中选择Open命令,则屏幕出现Open对话框,在Open对话框中选中所需打开的M文件。在文档窗口可以对打开的M文件进行编辑修改,编辑完成后,将M文件存盘。 (2) 命令操作。在MATLAB命令窗口输入命令:edit 文件名,则打开指定的M文件。 (3) 命令按钮操作。单击MATLAB主窗口工具栏上的Open File命令按钮,再从弹出的对话框中选择所需打开的M文件。 3.2 程序控制结构 3.2.1 顺序结构 1.数据的输入 从键盘输入数据,则可以使用input函数来进行,该函数的调用格式为: A=input(提示信息,选项); 其中提示信息为一个字符串,用于提示用户输入什么样的数据。 如果在input函数调用时采用's'选项,则允许用户输入一个字符串。例如,想输入一个人的姓名,可采用命令: xm=input('What''s your name?','s'); 2.数据的输出 MATLAB提供的命令窗口输出函数主要有disp函数,其调用格式为

D实验五 M文件和MATLAB程序设计

实验五M文件和MATLAB程序设计 一、实验目的 matlab作为一种高级计算机语言,不仅可以命令行方式完成操作,也具有数据结构、控制流、输入输出等能力,本次实验通过熟悉和掌握m文件的建立与使用方法,以及函数与控制程序流程语句的使用,使学生具备一定的编程和程序调试能力。 1.掌握M文件的使用方法。 2.掌握if语句和switch语句的使用 3. 掌握循环语句的使用 4. 通过练习理解MATLAB编程方法。 二、实验原理 1.m文件 用matlab语言编写的程序,称为m文件。M文件根据调用方式的不同分为两类,命令文件(Script file)和函数文件(Function file)。区别? 2.程序控制结构 1)顺序结构 2)选择结构 (1)if语句a) 单分支if语句b) 双分支if语句c) 多分支if语句 (2)switch 语句 (3)try语句 3)循环结构 (1)for 语句 (2)while语句 (3)break语句、continue语句、return使用,区别? 3.函数文件 function 输出形参表=函数名(输入形参表) 注释说明部分 函数体语句 注意事项? 三、实验要求 1.首先上机练习PPT中各种流程控制语句的有关实例。 2.然后上机练习下面的实验习题。 四、实验习题

1.数论中一个有趣的题目:任意一个正整数,若为偶数,则用2除之,若为奇数,则与3相乘再加上1。重复此过程,最终得到的结果为1。如: 2→1 3→10→5→16→8→4→2→1 6→3→10→5→16→8→4→2→1 运行下面的程序,按程序提示输入n=1,2,3,5,7,8,9等数来验证这一结论。 %classic "3n+1" problem from number theory. while 1 n=input('Enter n,negative quits:'); if n<=0 break end a=n; while n>1 if rem(n,2)==0 n=n/2; else n=3*n+1; end a=[a,n]; end a end Enter n,negative quits: 2. 编程求满足∑=>m i i 11000020的最小m 值。 a=0; i=1; while (a<100000) a=a+pow2(i); i=i+1; end m=i-1 3. 编写一个函数,计算下面函数的值,给出x 的值,调用该函数后,返回y 的值。 function [y]=myfun1(x)

实验五MATLAB的基本绘图方法

实验三MATLAB的基本绘图方法 一、实验目的 1.二维平面图形的绘制 2.三维立体图形的绘制 3.隐函数作图 二、实验地点:A404 三、实验日期: 四、实验内容 (一)二维平面图形的绘制 1、Plot的使用方法介绍 plot 是绘制二维图形的最基本函数,它是针对向量或矩阵的列来绘制曲线的。也就是说,使用plot 函数之前,必须首先定义好曲线上每一点的x 及y 坐标,常用格式为:(1)plot(x) 当x 为一向量时,以x 元素的值为纵坐标,x 的序号为横坐标值绘制 曲线。当x 为一实矩阵时,则以其序号为横坐标,按列绘制每列元素值相对于其序号的曲线,当x 为m×n 矩阵时,就由n 条曲线。 (2)plot(x,y) 以x 元素为横坐标值,y 元素为纵坐标值绘制曲线。 (3)plot(x,y1,x,y2,…) 以公共的x 元素为横坐标值,以y1,y2,…元素为纵坐标值绘制多条曲线。 例1:画出一条正弦曲线和一条余弦曲线。 >> x=0:pi/10:2*pi; >> y1=sin(x); >> y2=cos(x); >> plot(x,y1,x,y2) 注:在绘制曲线图形时,常常采用多种颜色或线型来区分不同的数据组,MA TLAB 软件专门提供了这方面的参数选项,我们只要在每个坐标后加上相关字符串,就可实现它们的功能。具体参见教材。 2、图形修饰 MATLAB 软件为用户提供了一些特殊的图形函数,用于修饰已经绘制好的图形。 图形修饰函数表如下: 函数含义 grid on (/off) 给当前图形标记添加(取消)网络 xlable(‘string’) 标记横坐标 ylabel(‘string’) 标记纵坐标 title(‘string’) 给图形添加标题 text(x,y,’string’) 在图形的任意位置增加说明性文本信息 gtext(‘string’) 利用鼠标添加说明性文本信息 axis([xmin xmax ymin ymax]) 设置坐标轴的最小最大值 例2、给例1的图形中加入网络和标记。 >> x=0:pi/10:2*pi; >> y1=sin(x); >> y2=cos(x); >> plot(x,y1,x,y2)

矩量法matlab程序设计实例

矩量法m atla b程序设计实例: Ha llen 方程求对称振子天线 一、条件与计算目标 已知: 对称振子天线长为L,半径为a ,且天线长度与波长得关系为,,设,半径a=0、0000001,因此波数为。 目标: 用H all en 方程算出半波振子、全波振子以及不同值得对应参数值。 求:(1)电流分布 (2)E 面方向图 (二维),H 面方向图(二维),半波振子空间方向性图(三维) 二、对称振子放置图 图1 半波振子得电流 分布 半波振子天线平行于z 轴放置,在x轴与y轴上得分量都为零,坐标选取方式有两种形式,一般选取图1得空间放置方 式。图1给出了天线得电流分布情况,由图可知,当天线很细时,电流分布近似正弦分布。 三、Ha llen 方程 得解题思路 ()()()()2 1 ' ' ' ' 12,cos sin sin 'z z i z z z z i z k z G z z dz c kz c kz E k z z dz j ωμ'++=-?? 对于中心馈电得偶极子,Hallen 方程为 ()22'1222 ('),'cos sin sin ,2L L i L L V i z G z z dz c kz c kz k z z j η + -- ++= <<+? 脉冲函数展开与点选配,得到 ()1121 ,''cos sin sin ,1,2,,2n n N z i n m m m m z n V I G z z dz c kz c kz k z m N j η +''=++= =???∑? 上式可以写成 矩阵形式为 四、结果与分析 (1)电流分布

Matlab实验

MATLAB实验报告 学校:湖北文理学院 学院:物理与电子工程学院 专业:电子信息工程 学号: 2013128182 姓名:张冲 指导教师:宋立新

实验一 MATLAB环境的熟悉与基本运算 一、实验目的: 1.熟悉MATLAB开发环境 2.掌握矩阵、变量、表达式的各种基本运算 二、实验内容 1、学习使用help命令,例如在命令窗口输入help eye,然后根据帮助说明, 学习使用指令eye(其它不会用的指令,依照此方法类推) 2、学习使用clc、clear,观察command window、command history和workspace 等窗口的变化结果。 3、初步程序的编写练习,新建M-file,保存(自己设定文件名,例如exerc1、 exerc2、exerc3……),学习使用MATLAB的基本运算符。 三、练习 1)help rand,然后随机生成一个2×6的数组,观察command window、 command history和workspace等窗口的变化结果。 2)学习使用clc、clear,了解其功能和作用。 3)用逻辑表达式求下列分段函数的值 4)求[100,999]之间能被21整除的数的个数。(提示:rem,sum的用法) 四、实验结果 1)

2)clc:清除命令窗口所有内容,数值不变;clear:初始化变量的值。3) 4)

实验二 MATLAB数值运算 一、实验目的 1、掌握矩阵的基本运算 2、掌握矩阵的数组运算 二、实验内容 1)输入C=1:2:20,则C(i)表示什么?其中i=1,2,3, (10) 2)输入A=[7 1 5;2 5 6;3 1 5],B=[1 1 1; 2 2 2; 3 3 3],在命令窗 口中执行下列表达式,掌握其含义: A(2, 3) A(:,2) A(3,:) A(:,1:2:3) A(:,3).*B(:,2) A(:,3)*B(2,:) A*B A.*B A^2 A.^2 B/A B./A 3)二维数组的创建和寻访,创建一个二维数组(4×8)A,查询数组A第2 行、第3列的元素,查询数组A第2行的所有元素,查询数组A第6列的所有 元素。 4)两种运算指令形式和实质内涵的比较。设有3个二维数组A 2×4,B 2×4 ,C 2×2 , 写出所有由2个数组参与的合法的数组运算和矩阵指令。 5)学习使用表4列的常用函数(通过help方法) 6)学习使用表5数组操作函数。 7)生成一个3行3列的随机矩阵,并逆时针旋转90°,左右翻转,上下翻转。 8)已知a=[1 2 3],b=[4 5 6],求a.\b和a./ b 9)用reshape指令生成下列矩阵,并取出方框内的数组元素。 三、实验结果 1)C(i)表示C中的第i个的数值;

相关文档