MATLAB实验程序

实验一

要求: 查看matlab 的版本

代码:version

结果:ans =

7.1.0.246 (R14) Service Pack 3

1.先求下列表达式的值,然后显示MATLAB 工作空间的使用情况并保存全部变量。

(1)z 1=2185sin 2e

+

z1=(2*sin(85*pi/180))/(1+exp(2))

z =

0.2375

(2)z 2=⎥⎦⎤⎢⎣⎡+=++545

.0-i 212其中),1ln(212x x x x=[2,1+2*i;-0.45,5]

x =

2.0000 1.0000 + 2.0000i

-0.4500 5.0000

>> z2=1/2*log(x+sqrt(1+x*x))

z2 =

0.7114 - 0.0253i 0.8968 + 0.3658i

0.2139 + 0.9343i 1.1541 - 0.0044i

(3)z 3=2

3.0ln )3.0sin(23.03.0a a e e a

a +++--,a=-3.0,-2.9,-2.8, …3.0 提示:用冒号表达式生成a 向量,求各点的函数值时用点乘计算。

a=[-3.0:0.1:3.0]

z3=1/2.*((exp(0.3.*a)-exp(-0.3.*a))).*sin(a+0.3)+log((0.3+a).*1/2)

(4)z 4=⎪⎩⎪⎨⎧<≤+-<≤-<≤32,12

,21,110,222t t t t t t t 其中t=0:0.5:2.5

提示:用逻辑表达式求分段函数值。

t=0:0.5:2.5

t =

0 0.5000 1.0000 1.5000 2.0000 2.5000

>> z4=t.^2.*(t>=0&t<1)+(t.^2-1).*(t>=1&t<2)+(t.^2-2*t+1).*(t>=2&t<3) z4 =

0 0.2500 0 1.2500 1.0000 2.2500

2.已知:A=

7

65

3

87

7

34

4

-

34

12

,B=

7

2

-

3

3

2

1

-

3

1

求下列表达式的值:

(1)A+6*B和A-B+I(其中I为单位矩阵) A=[12,34,-4;34,7,87;3,65,7]

A =

12 34 -4

34 7 87

3 65 7

>> B=[1,3,-1;2,0,3;3,-2,7]

B =

1 3 -1

2 0 3

3 -2 7

>> A+6*B

ans =

18 52 -10

46 7 105

21 53 49

>> I=eye(size(A))

I =

1 0 0

0 1 0

0 0 1

>> A-B+I

ans =

12 31 -3

32 8 84

0 67 1

(2)A*B和A.*B

A*B

ans =

68 44 62

309 -72 596

154 -5 241

>> A.*B

ans =

12 102 4

68 0 261

9 -130 49

(3)A^3和A.^3

A^3

ans =

37226 233824 48604

247370 149188 600766

78688 454142 118820

>> A.^3

ans =

1728 39304 -64

39304 343 658503

27 274625 343

(4)A/B和B\A

A/B

ans =

16.4000 -13.6000 7.6000

35.8000 -76.2000 50.2000

67.0000 -134.0000 68.0000

>> B/A

ans =

0.1027 -0.0062 -0.0069

0.0617 0.0403 -0.0366

0.0205 0.0855 -0.0507

(5)[A,B]和[A([1,3],:);B^2]

[A,B]

ans =

12 34 -4 1 3 -1

34 7 87 2 0 3

3 65 7 3 -2 7

>> [A([1,3],:);B^2]

ans =

12 34 -4

3 65 7

4 5 1

11 0 19

20 -5 40

3.设有矩阵A和B

A=⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡2524

2322212019181716151413121110987654321,B=⎥⎥⎥⎥⎥

⎥⎦

⎤⎢⎢⎢⎢⎢⎢⎣⎡111340794-23096-171603 (1) 求它们的乘积C 。

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]

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 6;17 -6 9;0 23 -4;9 7 0; 4 13 11]

B =

3 0 6

17 -6 9

0 23 -4

9 7 0

4 13 11

C=A*B

C =

93 150 67

258 335 177

423 520 287

588 705 397

753 890 507

(2) 将矩阵C 的左下角3×2子矩阵赋给D 。

(2)D=C([3,4,5],2:end)

D =

520 287

705 397

890 507

(3) 查看MATLAB 工作空间的使用情况。

4.完成下列操作:

(1)求[100,999]之间能被21整除的数的个数。

提示:先利用冒号表达式,再利用find 和length 函数。

A=100:999

P=rem(A,21)==0

Q=find(P)

>> length(Q)

ans =

43

(2)建立一个字符串向量,删除其中的大写字母。

提示:利用find 函数和空矩阵 。

ch='MmAaTtLlAaBb'

ch =

MmAaTtLlAaBb

>> k=find(ch>='A'&ch<='Z')

k =

1 3 5 7 9 11

ch(k)=[]

ch =

matlab

实验二、

1. 设有分块矩阵A=⎥⎦

⎤⎢⎣⎡⨯⨯⨯⨯23322333E S O R ,其中E 、R 、O 、S 分别为单位矩阵、随机矩阵、零矩阵和对角矩阵,试通过数值计算验证A=⎥⎦

⎤⎢⎣⎡+2E S O RS R 。

E=eye(3), R=rand([3,2]),O=zeros(2,3),S=diag([1,1]);A=[E,R;O,S]

E =

1 0 0

0 1 0

0 0 1

R =

0.9218 0.4057

0.7382 0.9355

0.1763 0.9169

O =

0 0 0

0 0 0

A =

1.0000 0 0 0.9218 0.4057

0 1.0000 0 0.7382 0.9355

0 0 1.0000 0.1763 0.9169

0 0 0 1.0000 0

0 0 0 0 1.0000

2.产生5阶希尔伯特矩阵H和5阶帕斯卡矩阵P,且求其行列式的值Hh

和Hp以及它们的条件数Th和Tp,判断哪个矩阵的性能更好。为什么?H=hilb(5),P=pascal(5)

H =

1.0000 0.5000 0.3333 0.2500 0.2000

0.5000 0.3333 0.2500 0.2000 0.1667

0.3333 0.2500 0.2000 0.1667 0.1429

0.2500 0.2000 0.1667 0.1429 0.1250

0.2000 0.1667 0.1429 0.1250 0.1111

P =

1 1 1 1 1

1 2 3 4 5

1 3 6 10 15

1 4 10 20 35

1 5 15 35 70

>> Hh=det(H),Pp=det(P)

Hh =

3.7493e-012

Pp =

1

>> Th=cond(H),Tp=cond(P)

Th =

4.7661e+005

Tp =

8.5175e+003

矩阵T 条件数比矩阵H 的条件数更接近1,因此,矩阵T 的性能要好于矩阵H 。

3. 建立一个5×5矩阵,求它的行列式值、迹、秩和范数。

A=[1 4 7 10 10;2 5 8 11 7;3 6 9 4 8;11 12 3 2 1;5 6 9 8 7]

A =

1 4 7 10 10

2 5 8 11 7

3 6 9

4 8

11 12 3 2 1

5 6 9 8 7

>> a1=det(A),a2=trace(A),a3=rank(A),a4=norm(A)

a1 =

5376

a2 =

24

a3 =

5

a4 =

32.3947

4. 已知A=⎥⎥⎥⎦

⎤⎢⎢⎢⎣⎡588-1252018629-

求A 的特征值及特征向量,并分析其数学意义。

A=[-29 6 18;20 5 12;-8 8 5]

A =

-29 6 18

20 5 12

-8 8 5

>> [V,D]=eig(A)

V =

0.7130 0.2803 0.2733

-0.6084 -0.7867 0.8725

0.3487 0.5501 0.4050

D =

-25.3169 0 0

0 -10.5182 0

0 0 16.8351

数学意义:求得的3个特征值是-25.3169、-10.5182、16.8351,各特征值对应的特征向量为V 的各列构成的向量。

5.

下面是一个线性方程组:⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡=⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡52.067.095.06/15/14/15/14/13/14/13/12/1321x x x (1) 求方程的解。

A=[1/2 1/3 1/4;1/3 1/4 1/5;1/4 1/5 1/6]

A =

0.5000 0.3333 0.2500

0.3333 0.2500 0.2000

0.2500 0.2000 0.1667

B=[0.95;0.67;0.52]

B =

0.9500

0.6700

0.5200

x=inv(A)*B

x =

1.2000

0.6000

0.6000

(2)

将方程右边向量元素b 3改为0.53,再求解,并比较b 3的变化和解的相对

变化。

B=[0.95;0.67;0.53]

B =

0.9500

0.6700

0.5300

>> x=inv(A)*B

x =

3.0000

-6.6000

6.6000

(4) 计算系数矩阵A 的条件数并分析结论。

cond(A)

ans =

1.3533e+003

6.建立A 矩阵,试比较sqrtm(A)和sqrt(A),并分析它们的区别。 A=rand(3)

A =

0.4103 0.3529 0.1389

0.8936 0.8132 0.2028

0.0579 0.0099 0.1987

>> sqrtm(A)

ans =

0.4248 0.2963 0.1314

0.7418 0.7709 0.0873

0.0764 -0.0106 0.4354

>> sqrt(A)

ans =

0.6405 0.5940 0.3727

0.9453 0.9018 0.4503

0.2406 0.0993 0.4458

实验三、

1. 求分段函数的值。

其他503且0,1,65,6222<≤-≠<⎪⎩

⎪⎨⎧--+--+=x x x x x x x x x y

用if 语句实现,分别输出x=-5.0,-3.0,1.0,2.0,2.5,3.0,5.0时的y 值。

2. 输入一个百分制成绩,要求输出成绩等级A 、B 、C 、D 、E 。其中90分~100分为A ,80分~89分为B ,70分~79分为C ,60分~69分为D ,60分以下为E 。

要求:

(1) 分别用if 语句和switch 语句实现。

(2) 输入百分制成绩后要判断该成绩的合理性,对不合理的成绩应输出出

错信息。

用IF 语句:x=input('请输入X 的值:')

if x<=100&x>=90

disp('A');

elseif x>=80&x<=89

disp('B');

elseif x>=70&x<=79

disp('C');

elseif x>=60&x<=69

disp('D');

elseif x>=0&x<=59

disp('E');

else x<0&x>100

disp('输入有误');

end

运行结果:请输入X 的值:97

x =

97

A

请输入X的值:132

x =

132

ans =

输入有误:

用swich语句:x=input('请输入x的值:');

swich floor(x/10)

case(9)

disp('A');

case(8)

disp('B');

case(7)

disp('C');

case(6)

disp('D');

case num2cell(0:5)

disp('E');

otherwise

disp('输入有误:');

end

3.硅谷公司员工的工资计算方法方法如下:

(1)工作时数超过120小时者,超过部分加发15%。

(2)工作时数低于60小时者,扣发700元。

(3)其余按每小时84小时计发。

试编程按输入的工号和该号员工的工时数,计算应付工资。

n=input('请输入工号:')

x=input('请输入该员工的工时数:')

if x>=120

y=84.*x+(x-120)*84*0.15;

elseif x<120&x>=60

y=84*x;

else x<60

y=84*x-700;

end

disp([n,'请输入该员工的工资:',x]);

y

请输入工号:001

n =

1

请输入该员工的工时数:100

x =

100

请输入员工的工资:d

y =

8400

请输入工号:002

n =

2

请输入该员工的工时数:59

x =

59

请输入员工的工资:;

y =

4256

请输入工号:003

n =

3

请输入该员工的工时数:122

x =

122

请输入员工的工资:z

y =

1.0273e+004

4.设计程序,完成两位数的加、减、乘、除四则运算,即产生两个两位随机整

数,再输入一个运算符号,做相应的运算,并显示相应的结果。

程序如下:

clear all

close all

clc

a=input('请输入第一个数¸öÊý');

b=input('请输入第二数¸öÊý');

c=input('请输入第运算符,'s');

if c=='+'

s=a+b;

else

if c=='-'

s=a-b;

else

if c=='*'

s=a*b;

else

if c=='/'

s=a/b;

else

disp('error');

end

end

end

end

disp(s);

请输入第一个数68

请输入第二5

请输入运算符/

1.0462

请输入第一个数2

请输入第二个数3

请输入运算符-

-1

>>

请输入第一个数2

请输入第二个数3

请输入运算符*

6

请输入第一个数2

请输入第二个数3

请输入运算符+

5

5.建立5×6矩阵,要求输出矩阵第n行元素。当n值超过矩阵的行数时,自

动转为输出矩阵最后一行元素,并给出出错信息。

程序如下:

clear all

close all

clc

A=1:30;

B=reshape(A,5,6);

n=input('input');

try

disp(B(n,:))

catch

disp(B(5,:))

end

lasterr

结果:

input4

4 9 14 19 24 29

input8

5 10 15 20 25 30

Attempted to access B(8,:); index out of bounds because size(B)=[5,6].

实验四、

例题

例题4.7

程序如下:

for m=100:999

m1=fix(m/100);

m2=rem(fix(m/10),10);

m3=rem(m,10);

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

disp(m)

end

end

输出结果为:

153

370

371

407

例4.8

程序如下:

y=0;n=100;

for i=1:n

y=y+1/i/i;

end

y

输出结果为:

y =

1.6350

例4.9

程序如下:

a=0;b=3*pi;

n=1000;h=(b-a)/n;

x=a;s=0;

f0=exp(-0.5*x)*sin(x+pi/6);

for i=1:n

x=x+h;

f1=exp(-0.5*x)*sin(x+pi/6);

s=s+(f0+f1)*h/2;

f0=f1;

end

s

运行结果:

0.9008

方法二:

a=0;b=3*pi;

n=1000;h=(b-a)/n;

x=a:h:b;

f=exp(-0.5*x)*sin(x+pi/6);

for i=1:n

s(i)=(f(i)+f(i+1))*h/2;

end

s=sum(s)

例4.10

程序如下:

s=0;

a=[12,13,14;15,16,17;18,19,20;21,22,23]; for k=a

s=s+k;

end

disp(s);

运行结果:

39

48

57

66

例4.11

程序如下:

sum=0;

n=0;

x=input('Enter a number(end in 0):'); while x~=0

sum=sum+x;

n=n+1;

x=input('Enter a number(end in 0):'); end

if(n>0)

sum

mean=sum/n

end

运行结果:

Enter a number(end in 0):67

Enter a number(end in 0):89

Enter a number(end in 0):93

Enter a number(end in 0):70

Enter a number(end in 0):0

319

mean =

79.7500

例4.12

程序如下:

X=input('Enter X:');

E=zeros(size(X));

F=eye(size(X));

n=1;

while norm(F,1)>0

E=E+F;

F=F*X/n;

n=n+1;

end

E

expm(X)

结果如下:

Enter X:[0.5,2,0;1,-1,-0.5;0.9,1,0.75]

E =

2.6126 2.0579 -0.6376

0.7420 0.7504 -0.5942

2.5678 2.3359 1.5549

ans =

2.6126 2.0579 -0.6376

0.7420 0.7504 -0.5942

2.5678 2.3359 1.5549

例4.13

程序如下:

for n=100:200

if rem(n,21)~=0

continue

end

break

end

n

运行结果:

n =

105

例4.14

程序如下:

for m=1:500

s=0;

for k=1:m/2

if rem(m,k)==0

s=s+k;

end

end

if m==s

disp(m);

end

end

运行结果:

n =

105

6

28

496

例4.15

程序如下:

m=input('m=');

p=1:m;

p(1)=0;

for i=2:sqrt(m)

for j=2*i:i:m

p(j)=0;

end

end

n=find(p~=0);

p(n)

运行结果:

m=20

ans =

2 3 5 7 11 13 17 19

1.根据+=22

1

16π2221...3121n +++ ,求π的近似值。当n 分别取100、1000、10000时,结果是多少?

要求:分别用循环结构和向量运算(使用sum 函数)来实现。

1. 程序如下:

n=input('Enter n:');

sum=0;

i=1;

while (i

d=1/(i^2);

sum=sum+d;

i=i+1;

end

p=sqrt(6*sum);

disp(p)

disp(abs(p-pi))

0.0096

Enter n:1000

3.1406

9.5555e-004

运行结果:

Enter n:100

3.1320

0.0096

Enter n:1000

3.1406

9.5555e-004

Enter n:10000

3.1415

9.5499e-005

2.根据y=1+1

21...715131+++++n ,求: (1)y<3时的最大值。

(2)与(1)的n 值对应的y 值。

程序如下:

clear all

n=1;

y=0;

while (y<3)

x=1/(2*n-1);

n=1+n;

y=y+x;

end

disp(['y<3时的最大n 值是:',num2str(n-2)])

disp(['相应的y 值是:',num2str(y-x)])

运行结果:

y<3时的最大n 值是:56

相应的y 值是:2.9944

3.考虑以下迭代公式: n n x b a x +=

+1

其中a 、b 为正的常数。

(1) 编写程序求迭代的结果,迭代的终止条件是5110-+≤-n n x x ,迭代初值

0x =1.0,迭代次数不超过500次。

clear all

close all

clc

x=1;

a=1;

b=1;

n=1;

while (abs(a/(b+x)-x)>10e-5&n<=500)

运行结果:0.6180

10

(2) 如果迭代过程收敛于r ,那么r 的准确值是2

4-2a b b +±,当(a,b )的值取(1,1)、(8,3)、(10,0.1)时,分别对迭代结果和准确值进行比较。

clear all

close all

clc

x=1;

a=1;

b=1;

n=1;

while(abs(a/(b+x)-x)>10e-5&n<=500)

x=a/(b+x);

n=n+1;

end

x

r1=(-b+sqrt(b^2+4*a))/2;

r2=(-b-sqrt(b^2+4*a))/2;

r1

r2

结果:x =

0.6180

r1 =

0.6180

r2 =

-1.6180

4.已知

⎪⎪⎩⎪⎪⎨⎧+-====---,2,1,0,13214321n n n f f f f f f f 3321>===n n n n

求1f ~100f 中:

(1) 最大值、最小值、各数之和。

(2) 正数、零、负数的个数。

5.若两个连续自然数的乘积减1是素数,则称这两个连续自然数是亲密数对,该素数是亲密素数。例如,2×3-1=5,由于5是素数,所以2和3是亲密数对,5是亲密素数。求[2,50]区间内:

(1) 亲密数对的对数。

(2) 与上述亲密数对对应的所有亲密素数之和。

clear all

close all

clc

p=0;

l=0;

H=[];

for m=2:50

a=m;

b=m-1;

c=a*b-1;

for k=1:c

if rem(c,k)==0

l=l+1;

end

end

if l==2

disp(['亲密对数是',num2str(a),',',num2str(b)])

p=p+1;

H=[H,c];

end

l=0;

end

sum=sum(H);

disp(['亲密对数个数是:',num2str(p)])

disp(['亲密对数和是:',num2str(sum)])

运行结果是:

亲密数对是3,2

亲密数对是4,3

亲密数对是5,4

亲密数对是6,5

亲密数对是7,6

亲密数对是9,8

亲密数对是10,9

亲密数对是11,10

亲密数对是12,11

亲密数对是14,13

亲密数对是16,15

亲密数对是17,16

亲密数对是20,19

亲密数对是21,20

亲密数对是22,21

亲密数对是25,24

亲密数对是27,26

亲密数对是29,28

亲密数对是31,30

亲密数对是32,31

亲密数对是36,35

亲密数对是39,38

亲密数对是40,39

亲密数对是42,41

亲密数对是45,44

亲密数对是46,45

亲密数对是47,46

亲密数对是49,48

亲密数对的个数是:28 亲密数对的和是:21066 >>

实验五、

例4.18

程序如下:

function f=factor(n) if n<=1

f=1;

else

f=n*factor(n-1) end

运行结果:>> factor(5) ans =

120

求s=1!+2!+3!+4!+5!

程序如下:

s=0;

(完整版)MATLAB)课后实验[1]

实验一 MATLAB 运算基础 1. 先求以下表达式的值,尔后显示 MATLAB 工作空间的使用情况并保存全部变量。 (1) 2sin 85 z 1 2 1 e (2) 1 2 z ln( x 1 x ) ,其中 2 2 x 2 1 2i 5 (3) a e e a z sin( a 0.3) ln , a 3.0, 2.9, L , 2.9, 3 2 2 2 t 0 t 1 (4) 2 z t 1 1 t 2 4 2 t 2t 1 2 t 3 ,其中 解: M 文件: z1=2*sin(85*pi/180)/(1+exp(2)) x=[2 1+2*i;-.45 5]; z2=1/2*log(x+sqrt(1+x^2)) a=-3.0:0.1:3.0; z3=(exp(0.3.*a)-exp(-0.3.*a))./2.*sin(a+0.3)+log((0.3+a)./2) t=0:0.5:2.5; z4=(t>=0&t<1).*(t.^2)+(t>=1&t<2).*(t.^2-1)+(t>=2&t<3) .*(t.^2-2*t+1)

4. 完成以下操作: (1) 求[100,999] 之间能被 21 整除的数的个数。 (2) 建立一个字符串向量,删除其中的大写字母。 解:(1) 结果: m=100:999; n=find(mod(m,21)==0); length(n) ans = 43 (2). 建立一个字符串向量比方: ch='ABC123d4e56Fg9'; 那么要求结果是: ch='ABC123d4e56Fg9'; k=find(ch>='A'&ch<='Z'); ch(k)=[] ch =

MATLAB实验程序

实验一 要求: 查看matlab 的版本 代码:version 结果:ans = 7.1.0.246 (R14) Service Pack 3 1.先求下列表达式的值,然后显示MATLAB 工作空间的使用情况并保存全部变量。 (1)z 1=2185sin 2e + z1=(2*sin(85*pi/180))/(1+exp(2)) z = 0.2375 (2)z 2=⎥⎦⎤⎢⎣⎡+=++545 .0-i 212其中),1ln(212x x x x=[2,1+2*i;-0.45,5] x = 2.0000 1.0000 + 2.0000i -0.4500 5.0000 >> z2=1/2*log(x+sqrt(1+x*x)) z2 = 0.7114 - 0.0253i 0.8968 + 0.3658i 0.2139 + 0.9343i 1.1541 - 0.0044i (3)z 3=2 3.0ln )3.0sin(23.03.0a a e e a a +++--,a=-3.0,-2.9,-2.8, …3.0 提示:用冒号表达式生成a 向量,求各点的函数值时用点乘计算。 a=[-3.0:0.1:3.0] z3=1/2.*((exp(0.3.*a)-exp(-0.3.*a))).*sin(a+0.3)+log((0.3+a).*1/2) (4)z 4=⎪⎩⎪⎨⎧<≤+-<≤-<≤32,12 ,21,110,222t t t t t t t 其中t=0:0.5:2.5 提示:用逻辑表达式求分段函数值。 t=0:0.5:2.5 t = 0 0.5000 1.0000 1.5000 2.0000 2.5000 >> z4=t.^2.*(t>=0&t<1)+(t.^2-1).*(t>=1&t<2)+(t.^2-2*t+1).*(t>=2&t<3) z4 =

MATLAB实验教程

实验一 1.实现单位采样序列,单位阶跃序列,矩形序列,并用图形显示。写出程序及输出图形。代码: (1)单位采样序列 x=-10:10; y=[zeros(1,10),1,zeros(1,10)]; figure(3); stem(x,y); axis([ -10, 10,0,2]); (2)单位阶跃序列 x=-10:10; y=[zeros(1,10),1,ones(1,10)]; figure(4); stem(x,y); axis([ -10, 10,0,2]); (3)矩形序列 x=-10:10; y=[zeros(1,10),1,ones(1,5),zeros(1,5)]; figure(4); stem(x,y); axis([ -10, 10,0,2]); 图: Figure 8.5.1. 1 单位采样序列Figure 8.5.1. 2 单位阶跃序列

Figure 8.5.1. 3 矩形序列 实验心得: 实验二 1.模拟信号x(t)=2sin(4*pi*t)+5cos(8*pi*t),以t=0.01n(n=0:N-1)进行采样,求:(1)N=40点FFT的幅度频谱,从图中能否观察出信号的2个频谱分量? (2)提高采样点数,如N=128,再求该信号的频谱幅度,此时幅度频谱发生了什么变化?代码: N=40;n=0:N-1; t=0.01*n; x=2*sin(4*pi*t)+5*cos(8*pi*t); k=0:N/2;w=2*pi/N*k; X=fft(x,N); magX=abs(X(1:N/2+1)); subplot(2,1,1);stem(n,x,'.');title('signal x(n)'); subplot(2,1,2);plot(w/pi,magX);title('FFT N=40'); xlabel('f (unit :pi)');ylabel('|X|');grid N=128;n=0:N-1; t=0.01*n; x=2*sin(4*pi*t)+5*cos(8*pi*t); k=0:N/2;w=2*pi/N*k; X=fft(x,N); magX=abs(X(1:N/2+1)); subplot(2,1,1);stem(n,x,'.');title('signal x(n)'); subplot(2,1,2);plot(w/pi,magX);title('FFT N=128'); xlabel('f (unit :pi)');ylabel('|X|');grid 图:

matlab实验

实验一 MATLAB基本操作 一、实验目的 1、了解MATLAB应用程序环境 2、掌握MATLAB语言程序的书写格式和MATLAB语言程序的结构。 3、掌握在MATLAB应用环境下编写程序 4、掌握MATALB调试过程,帮助文件 5、掌握MATLAB语言上机步骤,了解运行一个MATLAB程序的方法。 6、本实验可在学习完教材第一章后进行。 二、主要仪器及耗材 PC电脑,MATLAB6.5软件 三、实验内容和步骤 1、MATLAB语言上机步骤: (1)、进入系统 在C盘或其他盘上找到MATLAB或MATLAB6.5,然后双击其图标打开文件夹。 然后进行编辑源程序->编译->连接->执行程序->显示结果 (2)、常用命令 编辑切换(F6),编译(F9),运行(CTRL+F9),显示结果(ALT+F5)其它常用命令见“附录一”。 2、有下面的MATLAB程序。 (1)数值计算功能:如,求方程 3x4+7x3 +9x2-23=0的全部根

p=[3,7,9,0,-23]; %建立多项式系数向量 x=roots(p) %求根 (2)绘图功能:如,绘制正弦曲线和余弦曲线 x=[0:0.5:360]*pi/180; plot(x,sin(x),x,cos(x)); (3)仿真功能:如, 请调试上述程序。 3、熟悉MATLAB环境下的编辑命令,具体见附录一。 三、实验步骤 1、静态地检查上述程序,改正程序中的错误。 2、在编辑状态下照原样键入上述程序。 3、编译并运行上述程序,记下所给出的出错信息。 4、按照事先静态检查后所改正的情况,进行纠错。 5、再编译执行纠错后的程序。如还有错误,再编辑改正,直到不出现语法错误为止。

MATLAB实验

MATLAB实验一:MATLAB语言基本概念实验 实验目的: 1. 熟悉MATLAB语言及使用环境; 2.掌握MATLAB的常用命令; 3.掌握MATLAB的工作空间的使用; 4.掌握MATLAB的获得帮助的途径。 5.掌握科学计算的有关方法,熟悉MATLAB语言及其在科学计算中的运用; 6.掌握MATLAB的命令运行方式和M文件运行方式; 7.掌握矩阵在MATLAB中的运用。 实验方案分析及设计: 本次实验主要目的是了解MATLAB的使用环境,以及常用的一些命令的使用;了解矩阵在MATLAB实验中的具体运用,以及相关的一些符号命令的使用。 实验器材: 电脑一台,MATLAB软件 实验步骤: 打开MATLAB程序,将实验内容中的题目依次输入MATLAB中,运行得到并记录结果,最后再对所得结果进行验证。 实验内容及要求: 1.熟悉MATLAB的菜单和快捷键的功能 2.熟悉MATLAB的命令窗口的使用 3.熟悉常用指令的使用 format clc clear help lookfor who whos 4.熟悉命令历史窗口的使用 5. 熟悉MATLAB工作空间的功能 将工作空间中的变量保存为M文件,并提取该文件中的变量 6.熟悉MATLAB获取帮助的途径 将所有plot开头的函数列出来,并详细给出plotfis函数的使用方法 1. 输入 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 A=[7 1 5;2 5 6;3 1 5]

Matlab实验指导书(含参考程序)

Matlab实验指导书(含参考程序) 1 实验一:matlab操作环境熟悉 一、实验目的 1.初步了解matlab操作环境。 2.自学采用图形函数计算器命令funtool及其环境。 二、实验内容 熟识matlab操作方式环境,重新认识命令窗口、内存工作区窗口、历史命令窗口;学会采用format命令调整命令窗口的数据表明格式;学会采用变量和矩阵的输出,并展开直观的排序;学会采用who和whos命令查阅内存变量信息;学会采用图形函数计算器funtool,并展开以下排序: funtool(回车),出现三个窗口: figureno.1、figureno.2为函数曲线视窗,figureno.3为运算控制器。1.单函数运算操作方式。 求下列函数的符号导数 (1)y=sin(x); (2)y=(1+x)^3*(2-x);?求下列函数的符号积分 (1)y=cos(x);(2)y=1/(1+x^2);(3)y=1/sqrt(1-x^2);(4)y=(x-1)/(x+1)/(x+2);?谋反函数 (1)y=(x-1)/(2*x+3);(2)y=exp(x); (3)y=log(x+sqrt(1+x^2));?代数式的化简 (1)(x+1)*(x-1)*(x-2)/(x-3)/(x-4);(2)sin(x)^2+cos(x)^2; (3)x+sin(x)+2*x-3*cos(x)+4*x*sin(x); 在3号窗口的第一排按键是单函数运算操作键df/dx------求函数f对x的符号导数intf------求函数对x的符号积分simplef------对函数作尽可能的化简numf------取函数的分子表达式denf------取函数的分母表达式1/f------求函数的倒数1/f finv------f-1求函数的反函数,即g(f(x))=x2.函数与参数的运算操作方式。

实验二MATLAB程序设计含实验报告

实验二 MATLAB 程序设计 一、 实验目的 1.掌握利用if 语句实现选择结构的方法。 2.掌握利用switch 语句实现多分支选择结构的方法。 3.掌握利用for 语句实现循环结构的方法。 4.掌握利用while 语句实现循环结构的方法。 5.掌握MATLAB 函数的编写及调试方法。 二、 实验的设备及条件 计算机一台(带有MATLAB7.0以上的软件环境)。 M 文件的编写: 启动MATLAB 后,点击File|New|M-File ,启动MATLAB 的程序编辑及调试器(Editor/Debugger ),编辑以下程序,点击File|Save 保存程序,注意文件名最好用英文字符。点击Debug|Run 运行程序,在命令窗口查看运行结果,程序如有错误则改正 三、 实验内容 1.编写求解方程02=++c bx ax 的根的函数(这个方程不一定为一元二次方程,因 c b a 、、的不同取值而定) ,这里应根据c b a 、、的不同取值分别处理,有输入参数提示,当0~,0,0===c b a 时应提示“为恒不等式!”。并输入几组典型值加以检验。 (提示:提示输入使用input 函数) 2.输入一个百分制成绩,要求输出成绩等级A+、A 、B 、C 、D 、E 。其中100分为A+,90分~99分为A ,80分~89分为B ,70分~79分为C ,60分~69分为D ,60分以下为E 。 要求:(1)用switch 语句实现。 (2)输入百分制成绩后要判断该成绩的合理性,对不合理的成绩应输出出错信息。

(提示:注意单元矩阵的用法) 3.数论中一个有趣的题目:任意一个正整数,若为偶数,则用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等数来验证这一结论。 请为关键的Matlab 语句填写上相关注释,说明其含义或功能。 4. 编写一个函数,计算下面函数的值,给出标量x 的值,调用该函数后,返回y 的值。 function [y]=myfun1(x) 选择一些数据测试你编写的函数。 5. 编写一个函数求向量x 中元素的平均值、最大值、最小值、均方根值。 function [m_x,max_x,min_x,rms_x]=myfun2(x)方均根值(Root Mean Square)的计算公式为: 用下面数据测试你写的函数: (1)x=sin(0:0.01:6*pi) (2)x=rand(1,200),得到的x 为200个(0,1)之间均匀分布的随机数。 6.根据22222 1......3121116n ++++=π,求π的近似值。当n 分别取100、1000、10000时,结果是多少? 思考题: 有一分数序列: 编写一段程序,求前16项的和。 四、实验报告要求(包含预习报告要求和最终报告要求) %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

matlab程序与数值实验

MATLAB程序与数值实验 一、插值法(课本第二章) 1、拉格朗日插值方法 function s=lag(x,y,t) %拉格朗日插值方法,可以同时对多点插值,t可以为向量syms p; n=length(x);%读取x向量的维数 s=0; for(k=1:n) la=y(k); %构造基函数 for(j=1:k-1) la=la*(p-x(j))/(x(k)-x(j)); end; for(j=k+1:n) la=la*(p-x(j))/(x(k)-x(j)); end; s=s+la; simplify(s); end if(nargin==2) s=subs(s,'p','x'); s=collect(s);%展开多项式 s=vpa(s,6); else m=length(t); for i=1:m temp(i)=subs(s,'p',t(i)); end s=temp; End %for example % x=[pi/4 pi/6 pi/3 pi/2]; %y=[cos(pi/4) cos(pi/6) cos(pi/3) cos(pi/2)]; %t=[-40*pi/180 40*pi/180 50*pi/180 70*pi/180 170*pi/180]; %yt=lag(x,y,t) 2、牛顿插值法 function s=niudun(x,y,t) %,可以同时对多点插值,即t可以为向量

syms p; s=y(1); xishu=0; dxs=1; n=length(x);%读取x向量的维数 %构造牛顿插值方法 for (i=1:n-1) for(j=i+1:n) xishu(j)=(y(j)-y(i))/(x(j)-x(i)); end temp1(i)=xishu(i+1); dxs=dxs*(p-x(i)); s=s+temp1(i)*dxs; y=xishu; end simplify(s) if (nargin==2) s=subs(s,'p','x'); s=collect(s); s=vpa(s,4); else %读取要插值点的向量长度 %可以直接对多点插值机算 m=length(t); for i=1:m temp(i)=subs(s,'p',t(i)); end %得到的是系列插值点的插值结果,即得到的是向量,赋值给s s=temp; end %for example %1、已知零阶Bessel函数f(x)在若干点处的函数值为:计算x在1.5处的近似值%x=[1.0 1.3 1.6 1.9 2.2]; %y=[0.7651977 0.6200860 0.4554022 0.2818186 0.1103623]; %yt=niudun(x,y,1.5) 3、插值中的Runge现象 syms x f=1/(1+x^2); x=-5:5; y=subs(f,x); chazhi=niudun(x,y);

matlab实验8综合程序

主函数:MAIN clc; clear all; close all; echo on t0=3;%信号时长3 dt=0.02; % 系统时域采样间隔 fs=1/dt;%系统采样频率 df=0.2; %所需的频率分辨率 t=0:dt:t0; Lt=length(t);%仿真过程中,信号长度 % 产生模拟信号 m=[ones(1,t0/(3*dt)),-2*ones(1,t0/(3*dt )),zeros(1,t0/(3*dt)+1)]; pause figure(1); subplot(211); plot(t,m(1:length(t)));% 画出信号波形axis([0 3 -2.5 1.5]); xlabel('t'); ylabel('模拟信号'); subplot(212); [M,m,df1,f]=T2F(m,dt,df,fs);%求出信号频谱 plot(f,fftshift(abs(M)))% 画出信号频谱axis([-15 15 0 3]); xlabel('f');ylabel('模拟信号频谱'); pause %..............抽样模块............. fs=50; sdt=1/fs; t1=0:sdt:t0; sm=[ones(1,t0/(3*sdt)),-2*ones(1,t0/(3* sdt)),zeros(1,t0/(3*sdt)+1)]; figure(2); subplot(211); stem(t1,sm(1:length(t1))); title('抽样信号'); axis([0 t0 -2.1 1.1]); subplot(212); [SM,sm,df1,f]=T2F(sm,sdt,df,fs); plot(f,10*log10(abs(fftshift(SM).^2/len gth(f))))% 画出抽样信号功率 xlabel('f');ylabel('抽样信号PDF');% ··········模拟信号数字化·············guiyihua=2/2048; pcm_bianma=pcm_encode(m/guiyihua); figure(3); huitu(pcm_bianma); %***************加密************** q=length(pcm_bianma); out=reshape(pcm_bianma',8,q/8)'; for i=1:q/8 out(i,:)=jiami(out(i,:)); end out=reshape(out',1,q); pause %``````````信道编码调制解调译码``````` r=3 n=2^r-1 k=n-r if rem(length(out),k)==0 %判断A的长度是否能被k整除 BL=reshape(out,k,length(out)/k); BL=BL'; for i=1:length(out)/k hammc_out(i,:)=hamming_code(n,k,r,BL(i, :)) ;%将A进行(n,k)汉明编码 end hamming_bianma=reshape(hammc_out',1,(le ngth(out)/k)*n )%串行输出编码结果 figure(4); pause huitu(hamming_bianma); [jietiao_out,numoferr]=bpsk(hamming_bia nma) %调制,解调,串行输出hammd_out1=zeros(length(jietiao_out)/n, k); out1=reshape(jietiao_out,n,length(jieti ao_out)/n)' ; %将串转换成n列矩阵for i=1:length(jietiao_out)/n hammd_out1(i,:)=hamming_decode(n,k,r,ou t1(i,:));%汉明译码 end

数字信号处理实验(吴镇扬版)matlab程序

(1)数组的加、减、乘、除和乘方运算。输入A=[1 2 3 4],B=[3 4 5 6],求C=A+B,D=A-B,E=A.*B,F=A./B,G=A.^B并用stem语句画出A、B、C、D、E、F、G。 clear all; a=[1 2 3 4]; b=[3 4 5 6]; c=a+b; d=a-b; e=a.*b; f=a./b; g=a.^b; n=1:4; subplot(4,2,1);stem(n,a); xlabel('n');xlim([0 5]);ylabel('A'); subplot(4,2,2);stem(n,b); xlabel('n');xlim([0 5]);ylabel('B'); subplot(4,2,3);stem(n,c); xlabel('n');xlim([0 5]);ylabel('C'); subplot(4,2,4);stem(n,d); xlabel('n');xlim([0 5]);ylabel('D'); subplot(4,2,5);stem(n,e); xlabel('n');xlim([0 5]);ylabel('E'); subplot(4,2,6);stem(n,f); xlabel('n');xlim([0 5]);ylabel('F'); subplot(4,2,7);stem(n,g); xlabel('n');xlim([0 5]);ylabel('G'); (2)用MATLAB实现下列序列: a) x(n)=0.8n 0≤n≤15 b) x(n)=e(0.2+3j)n 0≤n≤15 c) x(n)=3cos(0.125πn+0.2π)+2sin(0.25πn+0.1π) 0≤n≤15 d) 将c)中的x(n)扩展为以16为周期的函数x16(n)=x(n+16),绘出四个周期。 e) 将c)中的x(n)扩展为以10为周期的函数x10(n)=x(n+10),绘出四个周期。 clear all; N=0:15; xa=0.8.^N; figure;subplot(2,1,1);stem(N,xa); xlabel('n');xlim([0 16]);ylabel('xa'); xb=exp((0.2+3*j)*N);

MATLAB简单程序大全

MATLAB简单程序大全求特征值特征向量 a=[234;159;852]det(a)a' rank(a)inv(a)rref(a) eig(a)%求特征值和特征向量 卫星运转问题 h=200,h=51000,r=6378;a=(h+h+2*r)/2;c=(h-h)/2; b=(a^2-c^2)^(1/2);e=c/a; f=sqrt(1-exp(2).*cos(t)^2);l=int(f,t,0,pi/2)l=4*a.*l 动态玫瑰线 n=3;n=10000; 二重积分 symsxyf=x^2*sin(y); int(int(f,x,0,1),y,0,pi)ezmesh(f,[0,1,0,pi])函数画图 symsx;f=exp(-0.2*x)*sin(0.5*x);ezplot(f,[0,8*pi])玫瑰线 theta=0:0.01:2*pi;r=cos(3*theta);polar(theta,r,'r')求x^2+y^2=1和x^2+z^2=1所围成的体积 symsxyzrr=1; z=sqrt(1-x^2);y0=z; v=8*int(int(z,y,0,y0),x,0,1) 求导数及图像 f='1/(5+4*cos(x))';subplot(1,2,1);ezplot(f)f1=diff(f)

subplot(1,2,2);ezplot(f1) 拖x轴转动 t=(0:20)*pi/10; r=exp(-.2*t).*sin(.5*t);theta=t; x=t'*ones(size(t));y=r'*cos(theta);z=r'*sin(theta);mesh(x,y,z) colormap([000]) 某年是否闰年 year=input('inputyear:=');n1=year/4;n2=year/100;n3=year/400; ifn1==fix(n1)&n2~=fix(n2)disp('是闰年') elseifn1==fix(n1)&n3==fix(n3)disp('就是闰年')else disp('不是闰年')end 玫瑰线的绘制 相遇问题 functionk=moto(a,b) ifnargin==0,a=0;b=100;endva=10;vb=8;vc=60;f=1;k=0; while(b-a)>0.2iff==1 tk=(b-a)/(vb+vc);else tk=(b-a)/(vc+va);end a=a+va*tk;b=b-vb*tk;f=-f;k=k+1;end 数学实验 symsx;x=1:100; f(x)=exp(-0.2*x).*sin(0.5*x);symsx;x=1:100; f(x)=exp(-0.2*x).*sin(0.5*x);plot(x,f(x)) symsx;x=0:0.1:2*pi; f(x)=exp(-0.2*x)*sin(0.5*x);plot(x,f(x))

matlab实验MATLAB基本编程

实验4M A T L A B 基本编程 一、实验目的 1. 熟悉MATLAB 的脚本编写 2. 熟悉MATLAB 的函数编写 3. 熟悉MATLAB 的变量使用 4. 熟悉MATLAB 的程序控制结构 二、实验内容 1. 分别选用if 或switch 结构实现下述函数表示; -1x ≤-a fx=x/a-a-a ⎪⎪⎪⎪⎩⎪⎪⎪⎪⎨⎧>≤<--≤<≤<--≤=d x d x c d x d c c x b b x a a x a b a x x f 0 )(11)(10)(

matlab实验

实验1-1 基本信号产生及matlab 使用练习 训练1 常见离散信号的MATLAB 产生和图形显示 1.单位抽样序列 ⎩⎨⎧=0 1)(n δ ≠=n n n=-50:50; x=[zeros(1,50),1,zeros(1,50)]; stem(n,x,'fill');grid on ; 图1-1 单位抽样序列 2. 单位阶越序列 ⎩ ⎨⎧01 )(n u 00<≥n n n=-50:50; x=[zeros(1,50),ones(1,51)]; stem(n,x,'fill');grid on ;

图1-2 单位阶跃序列 3.正弦序列 )/2sin()(ϕπ+=Fs fn A n x A=2; phi=pi/6; n=-10:10; f=0.1; fs=1; x=A*sin(2*pi*n*f/fs+phi); stem(n,x,'fill'); grid on ; 图1-3 正弦序列 4.复正弦序列

n j = ( ) e n xϖ n=0:50; f=0.1; fs=1; x=exp(j*2*pi*f*n/fs); stem(n,x,'fill'); grid on; 图1-4 复正弦序列5.指数序列 n ) ( x= n a n=0:10; a=2; x=a.^n; stem(n,x,'fill'); grid on;

图1-5 指数序列 训练2 常见离散信号的MATLAB 产生和图形显示 1 令()sin()()x n A n u n ω=+,其中16 π ω=,u(n)是白噪声。 (1)使用matlab 中的有关文件产生均值为0,功率为0.1的均匀分布白u(n),求其自相关函数并画出其波形。 (2)欲使x(n)的信噪比为10dB ,试决定A 的数值并画出x(n)及其自相关函数的图形。 解:(1) 产生均值为0,功率为0.1的均匀分布的白u(n)的程序如下: clear; p=0.1; N=5000; u=rand(1,N); u=u-mean(u); a=sqrt(12*p); u1=u*a; power_u1=dot(u1,u1)/N; subplot(211) plot(u1(1:200)); grid on ; ylabel('u(n)') xlabel('n') 求u(n)自相关函数的程序如下: fs=1000; [cory,lag]=xcorr(u1,'unbiased'); plot(lag/fs,cory);

实验1-----Matlab程序设计及绘图

实验一:Matlab程序设计及绘图 一、实验目的 1、掌握 Matlab 软件使用的基本方法; 2、熟悉 Matlab 的编程方法; 3、熟悉 Matlab 绘图命令及基本绘图控制。 二、实验内容 1.基本绘图命令 (1)绘制余弦曲线 y=cos(t),t∈[0,2π] (2)在同一坐标系中绘制余弦曲线 y=cos(t-0.25)和正弦曲线 y=sin(t-0.5), t∈[0,2π] 2.基本绘图控制 绘制[0,4π]区间上的 x1=10sint 曲线,并要求: (1)线形为点划线、颜色为红色、数据点标记为加号; (2)坐标轴控制:显示范围、刻度线、比例、网络线 (3)标注控制:坐标轴名称、标题、相应文本; 3.程序设计:找出从2开始的前100个素数,并依次排列显示。 三、实验原理 MATLAB环境是一种为数值计算、数据分析和图形显示服务的交互式的环境。MATLAB有3种窗口,即:命令窗口(The Command Window)、m-文件编辑窗口(The Edit Window)和图形窗口(The Figure Window),而Simulink另外又有Simulink模型编辑窗口。 1.命令窗口(The Command Window) 当MATLAB启动后,出现的最大的窗口就是命令窗口。用户可以在提示符“>>”后面输入交互的命令,这些命令就立即被执行。 在MATLAB中,一连串命令可以放置在一个文件中,不必把它们直接在命令窗口内输入。在命令窗口中输入该文件名,这一连串命令就被执行了。因为这样的文件都是以“.m”为后缀,所以称为m-文件。

2.m-文件编辑窗口(The Edit Window) 我们可以用m-文件编辑窗口来产生新的m-文件,或者编辑已经存在的m-文件。在MATLAB主界面上选择菜单“File/New/M-file”就打开了一个新的m-文件编辑窗口;选择菜单“File/Open”就可以打开一个已经存在的m-文件,并且可以在这个窗口中编辑这个m-文件。 四、实验要求 利用所学知识,完成上述各项实验内容,并将实验过程和实验步骤和结果写在报告中。

MATLAB程序设计与应用课后实验答案

实验一MATLAB 运算基础 1. 先求下列表达式的值,然后显示MATLAB 工作空间的使用情况 并保存全部变量。 (1) 012 2sin851z e =+ (2)21 ln(2z x =,其中2120.45 5i x +⎡⎤=⎢⎥-⎣⎦ (3) 0.30.330.3sin(0.3)ln , 3.0, 2.9,,2.9,3.022 a a e e a z a a --+=++=-- (4) 2242011 122123t t z t t t t t ⎧≤<⎪=-≤<⎨⎪-+≤<⎩ ,其中t =0:0.5:2.5

2. 已知: 求下列表达式的值: (1) A+6*B和A-B+I(其中I为单位矩阵) (2) A*B和A.*B (3) A^3和A.^3 (4) A/B及B\A (5) [A,B]和[A([1,3],:);B^2] 解:

运算结果:

3. 设有矩阵A和B (1) 求它们的乘积C。 (2) 将矩阵C的右下角3×2子矩阵赋给D。 (3) 查看MATLAB工作空间的使用情况。解:. 运算结果: 4. 完成下列操作:

(1) 求[100,999]之间能被21整除的数的个数。 (2) 建立一个字符串向量,删除其中的大写字母。 解:(1) 结果: (2). 建立一个字符串向量 例如: ch='ABC123d4e56Fg9';则要求结果是: 实验二 MATLAB 矩阵分析与处理 1. 设有分块矩阵33 322322E R A O S ⨯⨯⨯⨯⎡⎤=⎢⎥⎣⎦ ,其中E 、R 、O 、S 分别为单位矩阵、随机矩阵、零矩阵和对角阵,试通过数值计算验证22E R RS A O S +⎡⎤=⎢ ⎥⎣⎦ 。 解: M 文件如下; 输出结果:

实验三 MATLAB程序设计

实验三MATLAB程序设计 一、实验目的 掌握几种基本流程控制语句进行设计的方法;了解程序优化和调试方法;熟悉利用向量运算来代替循环操作的方法,具备对较复杂问题的编程求解能力。 二、实验内容 1、使用脚本文件,画出下列分段函数所表示的曲线。 y={x+1,⋯⋯x<0 1⋯⋯⋯0≤x≤1 x3⋯⋯⋯1≤x 计算上述分段函数的值,要求能够根据用户对x值的不同输入,程序给出相对应的结果。 2、编写一个程序,能够接收用户从键盘输入的多个数值,只有当接收到输入的数值为-1时方可结束输入过程,然后求解并输出前面输入的所有数值之和以及它们的平均值。

3、求解鸡兔同笼问题:鸡和兔子关在一个笼子里,已知共有头36个,脚100个,求笼内关了多少只兔子和多少只鸡? 4、求2~999中同时满足下列条件的自然数: (1)该数各位数字之和为奇数 (2)该数是素数

5、编写程序求解如下问题并尝试调试运行:我国人口按2000年第五次全国人口普查的结果为12.9533亿,如果假定年增长率1.07%保持不变,请问多少年后我国总人口能够达到30亿?

6、编写阶乘函数,并调用该函数来生成一个1!,2!,…,10!的阶乘表,如下所示: 1 1 2 2 3 6 4 24 5 120 6 720 7 5040 8 40320 9 362880 10 3628800 7、编写一个求解指数函数e x的函数文件 提示:指数函数的幂级数展开为:e x≈1+x1 1!+x2 2! +x3 3! +⋯

8、输入一个百分制成绩,要求输出成绩等级A、B、C、D、E。其中90~100分为A,80~89分为B,70~79分为C,60~69分为D,60分以下为E。 要求:(1)分别用if和switch语句实现。 (2)输入百分制成绩后要判断该成绩的合理性,对不合理的成绩应输出出错信息

MATLAB程序实验参考答案

MATLAB程序设计与应用(第二版)实验参考答案%实验一MATLAB运算基础 %第一题 %(1) z1=2*sin(85*pi/180)/(1+exp(2)) %(2) x=[2,1+2i;-0.45,5]; z2=0.5*log(x+sqrt(1+x.^2)) %(3) a=-3.0:0.1:3.0; z3=(exp(0.3*a)-exp(-0.3*a))/2.*sin(a+0.3)+log((0.3+a)/2) %(4) t=0:0.5:2.5; z4=t.^2.*(t>=0&t<1)+(t.^2-1).*(t>=1&t<2)+(t.^2-2*t+1).*(t>=2&t<3) %第二题 A=[12 34 -4;34 7 87;3 65 7]; B=[1 3 -1;2 0 3;3 -2 7]; A+6*B A-B+eye(size(A)) A*B A.*B A^3 A.^3 A/B B\A [A,B] [A([1,3],:);B^2] %第三题 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] C=A*B F=size(C) D=C(F(1)-2:F(1),F(2)-1:F(2)) whos %第四题 %(1): A=100:999; B=rem(A,21); C=length(find(B==0)) %(2): A='lsdhKSDLKklsdkl'; k=find(A>='A'&A<='Z'); A(k)=[] %实验二MATLAB矩阵分析与处理 %第一题 E=eye(3); R=rand(3,2); O=zeros(2,3); S=diag([2,3]); A=[E,R;O,S]; A^2 B=[E,(R+R*S);O,S^2] %第二题 H=hilb(5) P=pascal(5) Hh=det(H) Hp=det(P) Th=cond(H) Tp=cond(P)

matlab程序设计实验报告

实验报告 课程名称:可视化计算机语言实验项目名称:matlab程序设计学院:信息工程学院 专业:电子信息工程 指导教师: 报告人:学号:班级: 实验时间: 实验报告提交时间: 教务部制

一、实验目的与要求: 1、熟练掌握matlab的程序流程控制结构.. 2、熟悉掌握M文件的结构和函数调用.. 3、掌握内联函数和函数句柄的使用.. 4、了解程序性能剖析窗口.. 二、内容和步骤: MATLAB的语法规则简洁;编程效率高;作为一个完整的程序语言;MATLAB也有各种程序流程控制;文件格式和函数调用的规则;通过对函数的调用就能够组成庞大的程序;完成复杂的功能.. 1.使用程序流程控制 Fibonacci数列的各元素为:1、1、2、3、5、8、...满足一下关系 F1=1 F2=1 F n=F n-1+F n-2 用M函数文件实现;数列的元素个数为输入变量.. (1)按M函数文件格式创建文件开头.. function f=shiyan0501n %SHIYAN0501 %Fibonacci数列 %n 元素个数 %f 构成Fibonacci数列向量 % %copyright 2015-11-25 (2)用while循环实现程序功能 f1=1; f2=1; i=2; while i<=n fi+1=fi-1+fi; i=i+1; End 运行后;输入参数10;运行结果如下所示: (3)使用for循环实验 for i=2:n fi+1=fi-1+fi; end 运行结果如下所示:

(4)当某个元素大于50时;退出循环结构;程序修改如下: for i=2:n if fi>10 break else fi+1=fi-1+fi; end end 当某个元素大于50;程序便退出循环结构 当n=10;最后一个元素刚好是大于50的;正好退出循环结构 当n=12时;第十个元素对应的fi大于50;于是退出循环结构;不再运行f11;f12了.. (5)将该.m文件生成P码文件 >> pcode shiyan0501 将shiyan0501.m删除;重新运行该文件夹;结果如下所示: 练习: 将该M文件函数改为M脚本文件;将数列元素个数通过键盘输入;程序应该如何修改 ①将M文件函数另存为M脚本文件; ②在函数前加 n=input'please input a num:' 便可通过键盘键入文件

相关主题
相关文档
最新文档