当前位置:文档之家› MATLAB答案

MATLAB答案

MATLAB答案
MATLAB答案

************************ MATLAB语言实验指导书************************

华东交通大学电气学院

张永贤

2006年2月

实验一 MATLAB 工作环境熟悉及简单命令的执行

一、实验目的:熟悉MATLAB 的工作环境,学会使用MATLAB 进行一些简单的运算。 二、实验内容:MATLAB 的启动和退出,熟悉MATLAB 的桌面(Desktop ),包括菜单

(Menu )、工具条 (Toolbar )、命令窗口(Command Window)、历史命令窗口、工作

空间(Workspace)等;完成一些基本的矩阵操作;学习使用在线帮助系统。

三、实验步骤:

1、启动MATLAB ,熟悉MATLAB 的桌面。

2、在命令窗口执行命令完成以下运算,观察workspace 的变化,记录运算结果。 (1)(365-52?2-70)÷3 (2)>>area=pi*2.5^2

(3)已知x=3,y=4,在MATLAB 中求z :

()2

3

2

y x y

x z -=

(4)将下面的矩阵赋值给变量m1,在workspace 中察看m1在内存中占用的字节数。

m1=?????

????

???115

14

4

12679810115

133216 执行以下命令 >>m1( 2 , 3 ) >>m1( 11 ) >>m1( : , 3 )

>>m1( 2 : 3 , 1 : 3 )

>>m1( 1 ,4 ) + m1( 2 ,3 ) + m1( 3 ,2 ) + m1( 4 ,1) (5)执行命令>>help abs

查看函数abs 的用法及用途,计算abs( 3 + 4i ) (6)执行命令

>>x=0:0.1:6*pi; >>y=5*sin(x); >>plot(x,y)

(6)运行MATLAB 的演示程序,>>demo ,以便对MATLAB 有一个总体了解。

四、思考题

1、以下变量名是否合法?为什么? (1)x2 (2)3col (3)_row (4)for

2、求以下变量的值,并在MATLAB 中验证。 (1)a = 1 : 2 : 5 ;

(2)b = [ a' a' a' ] ; (3)c = a + b ( 2 , : )

实验二 MATLAB 语言矩阵运算

一、实验目的:掌握基本的矩阵运算及常用的函数。 二、实验内容:

????

??=65

4

321a ??

??

??-=53

1

142

b ???

?

?

?????-=201c ????

?

?????=06

3258741d 1、下列运算是否合法,为什么?如合法,结果是多少?

(1) result1 = a' (2) result2 = a * b (3) result3 = a + b (4) result4 = b * d

(5) result5 = [b ; c' ] * d (6) result6 = a . * b (7) result7 = a . / b (8) result8 = a . * c (9) result9 = a . \ b (10) result10 = a . ^2 (11) result11 = a ^2 (12) result11 = 2 . ^ a

2、用MATLAB 求下面的的方程组。

(1)

?????

???????-=??????????????????

?

??????----0174132

3

1

511222

315921274321x x x x (2)???

??

??=-++=--=-++=++565333

32821w z y x w y x w z y x z y x 3、已知?????

?

??????----=

132

3

1

511222

31592127A (1)求矩阵A 的秩(rank)

(2)求矩阵A 的行列式(determinant) (3)求矩阵A 的逆(inverse)

(4)求矩阵A 的特征值及特征向量(eigenvalue and eigenvector) 4、关系运算与逻辑运算 已知a=20,b=-2,c=0,d=1

(1) r1 = a > b

(2) r2 = a > b & c > d

(3) r3 = a == b* (-10) (4) r4 = ~b | c

三、思考题

10

99

10

10

10

2

22

2

2++++==

---=∑

n n y ,求y=?(用format long 查看y 的值)

实验三 程序的编辑及调试

一、实验目的:掌握MATLAB 程序编辑、运行及调试方法。

二、实验内容:

1、启动MATLAB 后,点击File|New|M-File ,启动MATLAB 的程序编辑及调试器

(Editor/Debugger ),编辑以下程序,点击File|Save 保存程序,注意文件名最好用英文字符。点击Debug|Run 运行程序,在命令窗口查看运行结果,程序如有错误则改正。 注:数论中一个有趣的题目:任意一个正整数,若为偶数,则用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

2、编程求满足∑=>m

i i

1100002的最小m 值。

三、思考题

用对分法求解方程x e

x

sin 2=-在[0,1]内的解,并验证,在程序中统计出对分次数。

提示:先将原方程转化成

0sin 2)(=-=-x e

x f x

的形式。

对分法的基本思想是:一个一元方程f(x)=0,若f(x1)*f(x2)<0,则在[x1,x2]区间内有实数解。取该区间的中点xm=(x1+x2)/2,判定f(x1)和f(x2)二者中哪一个与f(xm)异号,若

f(x1)*f(xm)<0,则解存在的区间缩小为[x1,xm],否则解存在的区间缩小为[xm,x2]。重复这样的步骤,直到区间的长度小于一个可以接受的小数(比如1e-10),则认为中点即是原方程的解。

实验四 函数的编写及调试

一、实验目的:掌握MATLAB 函数的编写及调试方法。 二、实验内容:

1、编写一个函数,计算下面函数的值,给出标量x 的值,调用该函数后,返回y 的值。

function [y]=myfun1(x)

??

?

??>+-≤<≤=3

,630,

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

选择一些数据测试你编写的函数。

2、编写一个函数求向量x 中元素的平均值、最大值、最小值、均方根值。

function [m_x,max_x,min_x,rms_x]=myfun2(x)方均根值(Root

Mean Square)的计算公式为:

==

N

i i x N

rms 1

2

1

用下面数据测试你写的函数: (1)x=sin(0:0.01:6*pi)

(2)x=rand(1,200),得到的x 为200个(0,1)之间均匀分布的随机数。

3、编写一个函数,给出一个向量],,[21n x x x x =,生成如下范德蒙矩阵。

function [v]=myvander(x)

???

????

?????????---11

2

11

22

2

2121111n n n n n n

x x x x x x x x x

例如:>>v=myvander([2 3 4 5])

得v=

??

???

???????12564

27

8

25169454321111 生成一些数据测试你写的函数。

三、思考题

编写程序,用如下迭代公式求

a ,a 的值分别为:3,17,113。迭代的终止条件为

5

n 1n 10

x x -+≤-,迭代初值0.1x 0=,迭代次数不超过100次。分别对迭代结果和准

值进

比较,并统计迭代次数。

1

n 1n 1n 2

2

2

x 2a 2

x x a x x

2a x

--++

=

?+=?=

实验五 MATLAB 的绘图

1、在同一坐标系下绘制下面三个函数在t ∈[0,4π]的图象。

)

sin(41.0321t e

y t

y t y t

-==

2、编写程序,选择合适的步距,绘制下面函数在区间[-6,6]中的图象。

??

?

??>+-≤<≤=3

,630,

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

3、用compass 函数画下面相量图

ua = 1 ; ub = cos(-2*pi/3)+sin(-2*pi/3)*i ; uc=cos(2*pi/3)+sin(2*pi/3)*i;

4、三维空间曲线绘制z=0:0.1:4*pi;

x=cos(z); y=sin(z);

plot3(x,y,z)

5、用mesh 或surf 函数,绘制下面方程所表示的三维空间曲面,x 和y 的取值范围设为[-3,3]。

10

10

2

2

y

x

z +

-

=

三、思考题

在同一坐标系下,用不同颜色和线型绘制以下两个函数在t ∈[-2π,2π]范围内的图象。

t

5.012

y =

t

2.02e

2y -=

实验六 MATLAB 数值运算

一、实验目的:掌握MATLAB 常用的数值运算函数。 二、实验内容:

1、求代数方程012927432

345=+++++x x x x x 的5个根,并将其用星号(*)标记在复平面图上。(用roots 和plot 函数)。

2、求代数方程015

=-x 的5个根,并将其用星号(*)标记在复平面图上。(用roots 和plot 函数)。

3、求下面函数在[0.5,4]区间内的过零点。(用fzero 函)

x x x x x x x f 1)cos(5)sin(2)(2

3

+

+-=

4、

已知R=50欧姆,U=4V ,二极管D 正向电流与电压的关系为:

?

??

?

??-=1KT q U s d d e

I I

其中:

U d 为二极管正向电压

I s 为反向饱合电流,取10-12A K 为玻尔茨曼常数,1.38*10-23

T 为绝对温度,取300开尔文(27摄氏度) q 为电子电荷1.6*10-19C

求此电路中的电流I d 和二极管正向电压U d (要求用fsolve 函数求解)

5

p 为压力值,u 为电压值,试用多项式d cp

bp

ap

p u +++=2

3

)(来拟合其特

性函数,求出a,b,c,d ,并把拟合曲线和各个测试数据点画在同一幅图上。

实验七 MATLAB 应用

1、以原点为奇对称中心的方波y(wt),可以用相应频率的基波及其奇次谐波合成。

,3,2,1)12sin()12(1

5sin 513sin 31sin 4)(=??????--++++=

n wt n n wt wt wt wt y π

取的阶数越多,越接近方波,但总消除不了边缘上的尖峰,这称为吉布斯效应。设方波频率

为50Hz,时间t 取0~0.04秒(f=50Hz,w=2*pi*f,h=1e-5,tf=40e-3,t = 0:h:tf),编写程序,画出如下用1次谐波、1,3次谐波、1,3,5,7,9次谐波,1,3,5,…,19次谐波合成的近似方波。(产生方波的函数为:square)

2、用Simulink 求解下图所示电路0~100微秒内的响应。已知R=6*10-4欧,C=1700微法,L=6*10-9享,u c (0)=15kV 。

● 模块参数设置:

Integrator1的Initial condition:15kV

在命令窗口为R,L,C 赋值。 ● 仿真参数设置如下:

Start time:0

Stop time:100e-6

Solver Type:Variable-step

Solver:ode45

Max step size:1e-7

Min step size:auto

Initial step size:auto

Relative tolerance:1e-3

Absolute tolerance:1e-6

MATLAB实验程序

实验1

第1题.

(1)

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

x =

0.2375

(2).

x=[2 1+2i;-0.45 5];

y=0.5*log(x+sqrt(1+x^(2)))

y =

0.7114 - 0.0253i 0.8968 + 0.3658i

0.2139 + 0.9343i 1.1541 - 0.0044i

x=[2 1+2i;-0.45 5];

d=0.5*log(x+sqrt(1+x*x))

d =

0.7114 - 0.0253i 0.8968 + 0.3658i

0.2139 + 0.9343i 1.1541 - 0.0044i

x=[2 1+2*i;-0.45 5];

y=0.5*log(x+sqrt(1+x^(2)))

y =

0.7114 - 0.0253i 0.8968 + 0.3658i

0.2139 + 0.9343i 1.1541 - 0.0044i

(3).

a=-3.0:0.1:3.0;

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

结果略

(4)

>> t=0:0.5:2.5;

>> f1=t.^2;

>> f2=t.^2-1;

>> f3=t.^2-2*t+1;

>> z=(t>=0&t<1).*f1+(t>=1&t<2).*f2+(t>=2&t<3).*f3

z =

0 0.2500 0 1.2500 1.0000 2.2500 第2题

(1)

>> A=[12 34 -4;34 7 87;3 65 7];

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

>> A+6*B

ans =

18 52 -10

46 7 105

21 53 49

>> A-B+eye(3)

ans =

12 32 -2

33 8 85

1 68 1

(2)

>> 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

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

ans =

16.4000 -13.6000 7.6000

35.8000 -76.2000 50.2000

67.0000 -134.0000 68.0000

>> B\A

ans =

109.4000 -131.2000 322.8000

-53.0000 85.0000 -171.0000

-61.6000 89.8000 -186.2000

(5)

>> [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=[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

C =

93 150 77

258 335 237

423 520 397

588 705 557

753 890 717

>> D=C(3:5,2:3)

D =

520 397

705 557

890 717

第4题

(1)

>> a=100:999;

>> k=find(rem(a,21)==0); %找出能杯21整除的元素位置,find()函数找出不为0的元素位置>> x=length(k) %获得向量k的元素个数并赋值给变量x

x =

43

>> k=find(rem(a,21)==0) %显示能杯21整除的元素位置

k =

Columns 1 through 24

6 2

7 4

8 6

9 90 111 132 153 174 195 216 237 258 279 300 321 342 363 384 405 426 447 468 489

Columns 25 through 43

510 531 552 573 594 615 636 657 678 699 720 741 762 783 804 825 846 867 888

>> y=100+k-1 %显示能杯21整除的元素

y =

Columns 1 through 23

105 126 147 168 189 210 231 252 273 294 315 336 357 378 399 420 441 462 483 504 525 546 567

Columns 24 through 43

588 609 630 651 672 693 714 735 756 777 798 819 840 861 882 903 924 945 966 987

(2)

sh='CDe345Efg69K';

>> k=find(sh>='A'&sh<='Z');%找出大写字母的位置

>> sh(k)=[]; %删除大写字母

>> x=sh(1:end) %显示处理后的字符

x =

e345fg69

实验2

第1题

a=[1 2 3;4 5 6];

b=[2 4 -1;1 3 5];

c=[1;0;-2];

d=[1 4 7;8 5 2;3 6 0];

>> result1=a' % a的转置

result1 =

1 4

2 5

3 6

>> result2=a*b %error 应采用点乘

>> result3=a+b %求两个矩阵的和

result3 =

3 6 2

5 8 11

>> result4=b*d %矩阵相乘

result4 =

31 22 22

40 49 13

>> result5=[b;c']*d

result5 =

31 22 22

40 49 13

-5 -8 7

>> result6=a.*b %%矩阵点乘

result6 =

2 8 -3

4 1

5 30

>> result7=a./b %矩阵右点除

result7 =

0.5000 0.5000 -3.0000

4.0000 1.6667 1.2000

>> result8=a.*c %error a和c维数不同>> result9=a.\b %%矩阵左点除

result9 =

2.0000 2.0000 -0.3333

0.2500 0.6000 0.8333

>> result10=a.^2

result10=

1 4 9

16 25 36

>> result11=a^2 %error 等价于a*a

>> result12=2.^a

result12 =

2 4 8

16 32 64

第2题

(1)

>> A=[7 2 1 -2;9 15 3 -2;-2 -2 11 5;1 3 2 13];

>> B=[4;7;-1;0];

>> X=inv(A)*B %A\B等价于inv(A)*B, A/B等价于A*inv(B) X =

0.4979

0.1445

0.0629

-0.0813

>> X1=A\B

X1 =

0.4979

0.1445

0.0629

-0.0813

(2)

>> a=[1 1 1 0;1 2 1 -1;2 -1 0 -3;3 3 5 -6];

>> b=[1;8;3;5];

>> x=inv(a)*b

x =

1.0000

5.0000

-5.0000

-2.0000

第3题

>> A=[7 2 1 -2;9 15 3 -2;-2 -2 11 5;1 3 2 13];

>> a1=rank(A)

a1 =

4

>> a2=det(A)

a2 =

12568

>> a3=inv(A)

a3 =

0.1744 -0.0303 -0.0125 0.0270

-0.1050 0.0789 -0.0121 0.0006

0.0083 0.0173 0.0911 -0.0311

0.0095 -0.0185 -0.0103 0.0795

>> [V,D]=eig(A) %V为向量A的特征向量,D为特征值

V =

-0.7629 0.0919 + 0.0640i 0.0919 - 0.0640i -0.0299

0.6223 0.6087 + 0.0276i 0.6087 - 0.0276i 0.2637

0.0807 -0.7474 -0.7474 0.6434 -0.1554 0.0342 - 0.2374i 0.0342 + 0.2374i 0.7180

D =

4.8554 0 0 0

0 12.6460 + 1.8333i 0 0

0 0 12.6460 - 1.8333i 0

0 0 0 15.8526 第4题

>> a=20;

>> b=-2;

>> c=0;

>> d=1;

>> r1=a>b

r1 =

1

>> r2=a>b&c>d

r2 =

>> r3 = a == b* (-10)

r3 =

1

>> r4 = ~b | c

r4 =

5

>> y=0;

for k=-10:10

y=y+pow2(k);

end

format long

>> y

y =

2.047999023437500e+003

实验3

方法一

a=0;

for i=1:20

a=a+pow2(i);

if a>10000

m=i;

break

end

end

m

方法二

a=0;

i=1;

while (a<10000)

a=a+pow2(i);

i=i+1;

end

m=i-1;

m

实验4

第1题

function [y]=myfun1(x)

if x<=0

y=sin(x);

elseif x>0&x<=3

y=x;

elseif x>3

y=-x+6;

end

运行结果:

>> [y]=myfun1(-pi/2)

y =

-1

>> [y]=myfun1(0)y =

>> [y]=myfun1(2)

y =

2

>> [y]=myfun1(4)

y =

2

第2题

function [m_x,max_x,min_x,rms_x]=myfun2(x) %求平均值

sum_x=sum(x); %向量元素求和

[m,n]=size(x); %最好用n=length(x);

m_x=sum_x/n;

%求最大值采用逐个比较方式

if x(1)>x(2)

max_x=x(1);

else

max_x=x(2);

end

for k=3:n

if max_x

max_x=x(k);

else

max_x=max_x; %可省略

end

end

%求最小值

if x(1)

min_x=x(1);

else

min_x=x(2);

end

for k=3:n

if min_x>x(k)

min_x=x(k);

else

min_x=min_x; %可省略

end

end

%求均方根值

sum_x2=0;

for k=1:n

sum_x2=sum_x2+x(k).^2;

rms_x=sqrt(sum_x2/n);

end

m_x;

max_x;

min_x;

rms_x; %按照函数值行参顺序输出结果

运行结果:

>> [m_x,max_x,min_x,rms_x]=myfun2(sin(0:0.01:6*pi)) m_x =

-1.1256e-007

max_x =

1.0000

min_x =

-1.0000

rms_x =

0.7071

>> [m_x,max_x,min_x,rms_x]=myfun2(rand(1,200))

m_x =

0.4977

max_x =

0.9961

min_x =

0.0046

rms_x =

0.5778

第3题

function [v]=myvander(x)

v1=vander(x); %生成范德蒙矩阵

v2=v1';

v=flipud(v2); %实现矩阵上下翻转

运行结果:

>> [v]=myvander(2:5)

v =

1 1 1 1

2 3 4 5

4 9 16 25

8 27 64 125 思考题

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 =

6

>> [x,n]=sqrt_a(113)

正确

x =

10.6301

n =

8

实验5

第1题.

方法1

>> t=linspace(0,4*pi,200);

y1=t;

y2=sqrt(t);

y3=4*pi*exp(-0.1*t).*sin(t); plot(t,y1,'b',t,y2,'g',t,y3,'r')

方法2

>> t=linspace(0,4*pi,200);

y1=t;

y2=sqrt(t);

y3=4*pi*exp(-0.1*t).*sin(t); t=[t,t,t];

y=[y1,y2,y3];

plot(t,y)

第2题

>> x=linspace(-6,6,100);

for x0=x

if x0<=0

y=[y,sin(x0)];

elseif x0<=3

y=[y,x0];

else

y=[y,-x0+6];

end

end

plot(x,y);

axis([-7 7 -2 4]);

title('分段函数曲线');

text(-3*pi/2,1,'y=sin(x)');

text(2,2,'y=x');

text(4,2,'y=-x+6');

第3题

ua=1;

ub=cos(-2*pi/3)+sin(-2*pi/3)*i;

uc=cos(2*pi/3)+sin(2*pi/3)*i; compass([ua,ub,uc,ua-ub,ub-uc,uc-ua]) title(‘相量图’);

第4题

>> z=0:0.1:4*pi;

x=cos(z);

y=sin(z);

plot3(x,y,z,'rp');

title('三维空间曲线');

text(0,0,0,'origin');

xlabel('X'),ylabel('Y'),zlabel('Z'); grid;

第5题

(1)

>>x=-3:0.1:3;

[x,y]=meshgrid(x);

z=-x.^2/10+y.^2/10;

mesh(x,y,z);

xlabel('X'),ylabel('Y'),zlabel('Z');

title('立体网状图');

(2)

>>x=-3:0.1:3;

[x,y]=meshgrid(x);

z=-x.^2/10+y.^2/10;

surf(x,y,z);

xlabel('X'),ylabel('Y'),zlabel('Z');

title('立体曲面图');

思考题

>> t=-2*pi:pi/100:2*pi;

y1=2.^(0.5*abs(t));

y2=2*exp(-0.2*t);

plot(t,y1,'-g');

hold on;

plot(t,y2,':r');

legend('曲线y1','曲线y2');

hold off;

grid;

实验6

>> A=[3,4,7,2,9,12];

x=roots(A)

plot(x,'*');

grid;

x =

-0.8612 + 1.4377i

-0.8612 - 1.4377i

0.6737 + 1.0159i

0.6737 - 1.0159i

-0.9583

第2题

>> A=[1,0,0,0,0,-1];

x=roots(A)

plot(x,'*');

grid;

x =

-0.8090 + 0.5878i

-0.8090 - 0.5878i

0.3090 + 0.9511i

0.3090 - 0.9511i

1.0000

第3题

%估计零点

fplot('x^3+1/x',[0.5,4]);

hold on;

fplot('2*x^2*sin(x)-5*x*cos(x)',[0.5,4]);

hold off;

[m,n]=ginput

%建立函数

function y=f(x)

y=x^3-2*x^2*sin(x)+5*x*cos(x)+1/x;

%调用函数

>> y1=fzero('fz',1.5)

y1 =

1.5117

>> y2=fzero('fz',2.5)

y2 =

2.6095

第4题

%估计零点

axis([0,1,0,0.1]);

fplot('10^(-12)*exp(Ud*1.6*10^(-19)/(1.38*10^(-23)*300)-1)',[0,4]); hold on;

fplot('(Ud-4)/50',[0,4]);

hold off;

[m,n]=ginput

%建立函数

function f=myfun(X)

Id=X(1);

Ud=X(2);

f(1)=Id-10^(-12)*exp(Ud*1.6*10^(-19)/(1.38*10^(-23)*300)-1);

f(2)=50*Id-Ud-4;

%调用函数

>> x=fsolve('myfun',[0,0.8],optimset('Display','off'))

x =

0.0936 0.6795

%验证结果

>> K=myfun(x)

K =

1.0e-008 *

-0.3087 0

第5题

>> p=[0.0,1.1,2.1,2.8,4.2,5.0,6.1,6.9,8.1,9.0,9.9];

u=[10,11,13,14,17,18,22,24,29,34,39];

x=polyfit(p,u,3) %得多项式系数

t=linspace(0,10,100);

y=polyval(x,t); %求多项式得值

plot(p,u,'*',t,y,'r') %画拟和曲线

x =

0.0195 -0.0412 1.4469 9.8267

实验7

第1题

>>f=50;

w=2*pi*f;

h=1e-5;

tf=40e-3;

t=0:h:tf;

wt=w*t;

y1=4/pi*sin(wt);

y2=4/pi*(sin(wt)+1/3*sin(3*wt));

y3=4/pi*(sin(wt)+1/3*sin(3*wt)+1/5*sin(5*wt)+1/7*sin(7*wt)+1/9*sin(9*wt));

y4=4/pi*(sin(wt)+1/3*sin(3*wt)+1/5*sin(5*wt)+1/7*sin(7*wt)+1/9*sin(9*wt)+1/11*sin(11*wt)+ 1/13*sin(13*wt)+1/15*sin(15*wt)+1/17*sin(17*wt)+1/19*sin(19*wt));

y=square(wt);

subplot(2,2,1);

plot(wt,y1,wt,y);

title('1次谐波');

subplot(2,2,2);

plot(wt,y2,wt,y);

title('1,3次谐波');

subplot(2,2,3);

plot(wt,y3,wt,y);

title('1,3,5,7,9次谐波');

subplot(2,2,4);

plot(wt,y4,wt,y);

title('1,3,5……,19次谐波');

第2题

参数如下:

>> R=6e-4;

C=17e-4;

L=6e-9;

模块参数设置:

Integrator1的Initial condition:15kV

在命令窗口为R,L,C赋值。

仿真参数设置如下:

Start time:0

Stop time:100e-6

Solver Type:Variable-step

Solver:ode45

Max step size:1e-7 Min step size:auto Initial step size:auto Relative tolerance:1e-3 Absolute tolerance:1e-6

matlab程序大全答案

频率特性类题目 1 一个系统的开环传递函数为 ,试绘制其当K=5、30时系统的开环频率特性Nyquist 图,并判断系统的稳定性。 w=linspace(0.5,5,1000)*pi; sys1=zpk([],[0 -10 -2],100) sys2=zpk([],[0 -10 -2],600) figure(1) nyquist(sys1,w) title('system nyquist charts with k=5') figure(2) nyquist(sys2,w) title('system nyquist charts with k=30') 由图可知K=5时,开环Nyquist 曲线没有包围(-1,j0)点,所以系统稳定。 K=30时,开环Nyquist 曲线包围(-1,j0)点,所以系统不稳定。 2系统开环传递函数为 ,建立其零极点增益模型, 然后分别绘制当K=5、K=30时系统的开环频率特性Bode 图,并判断系统的稳定性。 sys1=zpk([],[0 -10 -2],100) sys2=zpk([],[0 -10 -2],600) figure(1) [Gm1,Pm1,Wcg1,Wcp1]=margin(sys1) bode(sys1) title('system bode charts with k=5'),grid figure(2) [Gm2,Pm2,Wcg2,Wcp2]=margin(sys2) bode(sys2) title('system bode charts with k=30'),grid 因为K=5时,Wcg>Wcp,所以系统稳定。 K=10时,Wcg

MATLAB程序设计教程课后答案

实验指导 1、 n=input('请输入一个三位数:'); a=fix(n/100); b=fix((n-a*100)/10); c=n-a*100-b*10; d=c*100+b*10+a 2(1) n=input('请输入成绩'); switch n case num2cell(90:100) p='A'; case num2cell(80:89) p='B'; case num2cell(70:79) p='C'; case num2cell(60:69) p='D'; otherwise p='E'; end price=p (2)n=input('请输入成绩'); if n>=90&n<=100 p='A'; elseif n>=80&n<=89 p='B'; elseif n>=70&n<=79 p='C'; elseif n>=60&n<=69 p='D'; else p='E'; end price=p (3)try n; catch price='erroe' end 3 n=[1,5,56,4,3,476,45,6,3,76,45,6,4,3,6,4,23,76,908,6]; a=n(1);

for m=2:20 if n(m)>a a=n(m); elseif n(m)=0 disp(A([n],:)); elseif n<0 disp(lasterr); else disp(A([6],:)); disp(lasterr); end 7(1) f=[]; for n=1:40

matlab程序设计第三章课后习题答案

1. p138 第6题在同一坐标轴中绘制下列两条曲线并标注两曲线交叉点。 >> t=0:0.01:pi; >> x1=t; >> y1=2*x1-0.5; >> x2=sin(3*t).*cos(t); >> y2=sin(3*t).*sin(t); >> plot(x1,y1,'r-',x2,y2,'g-') >> axis([-1,2,-1.5,1]) >> hold on >> s=solve('y=2*x-0.5','x=sin(3*t)*cos(t)','y=sin(3*t)*sin(t)'); >> plot(double(s.x),double(s.y),'*'); 截图:

p366 第4题绘制极坐标曲线,并分析对曲线形状的影响。 function [ output_args ] = Untitled2( input_args ) %UNTITLED2 Summary of this function goes here % Detailed explanation goes here theta=0:0.01:2*pi; a=input('请输入a的值:'); b=input('请输入b的值:'); n=input('请输入n的值:'); rho=a*sin(b+n*theta); polar(theta,rho,'k'); end 下面以a=1,b=1,n=1的极坐标图形为基础来分析a、b、n的影响。

对a的值进行改变:对比发现a只影响半径值的整倍变化 对b的值进行改变:对比发现b的值使这个圆转换了一定的角度

对n的值进行改变:对比发现当n>=2时有如下规律 1、当n为整数时,图形变为2n个花瓣状的图形 2、当n为奇数时,图形变为n个花瓣状的图形 分别让n为2、3、4、5

MATLAB程序应用题及答案

MATLAB程序: 1、求解准则层对目标层的权重向量w以及最大特征值d >> A=[1 2 4;1/2 1 2;1/4 1/2 1]; >> [v,d]=eig(A) v = -0.9631 0.8729 0 0.2408 0.4364 -0.8944 0.1204 0.2182 0.4472 d = -0.0000 0 0 0 3.0000 0 0 0 0 >> w=v(:,2)/sum(v(:,2)) w = 0.5714 0.2857 0.1429 2、求解第三层对第二层的权重向量w1,w2,w3及对应的最大特征值d1,d2,d3,并进行一致性检验 >> B1=[1 3 2;1/3 1 1/2;1/2 2 1]; >> [w1,d1]=eig(B1) w1 = -0.8468 0.8468 0.8468 -0.2565 -0.1282 - 0.2221i -0.1282 + 0.2221i -0.4660 -0.2330 + 0.4036i -0.2330 - 0.4036i d1 = 3.0092 0 0 0 -0.0046 + 0.1663i 0 0 0 -0.0046 - 0.1663i >> w1=w1(:,1)/sum(w1(:,1)) w1 = 0.5396 0.1634 0.2970 >> CI=(3.0092-3)/(3-1) CI = 0.0046 >> RI=0.58; >> CR=CI/RI CR = 0.0079 >> B2=[1 3 9;1/3 1 3;1/9 1/3 1]; >> [w2,d2]=eig(B2) w2 =

-0.9435 0.4427 0.9392 -0.3145 -0.8643 -0.3433 -0.1048 0.2389 0.0101 d2 = 3.0000 0 0 0 0.0000 0 0 0 -0.0000 >> w2=w2(:,1)/sum(w2(:,1)) w2 = 0.6923 0.2308 0.0769 >> B3=[1 3 5;1/3 1 2;1/5 1/2 1]; >> [w3,d3]=eig(B3) w3 = -0.9281 0.9281 0.9281 -0.3288 -0.1644 + 0.2847i -0.1644 - 0.2847i -0.1747 -0.0873 - 0.1513i -0.0873 + 0.1513i d3 = 3.0037 0 0 0 -0.0018 + 0.1053i 0 0 0 -0.0018 - 0.1053i >> CI=(3.0037-3)/(3-1) CI = 0.0018 >> RI=0.58; >> CR=CI/RI CR = 0.0032 >> w3=w3(:,1)/sum(w3(:,1)) w3 = 0.6483 0.2297 0.1220 >> w4=w1*w(1,:) Q1,Q2,Q3对O层的组合权重为 w4 = 0.3084 0.0934 0.1697 Q4,Q5,Q6对O层的组合权重为

matlab简单编程21个题目及答案

1、设 ? ? ? ? ? ? + + = ) 1( sin 3 5.0 cos 2 x x x y ,把x=0~2π间分为101点,画出以x为横坐 标,y为纵坐标的曲线。 第一题的matlab源程序: ①考虑cos(x)为一个整体,然后乘以中括号里面的全部 x=0:2*pi/100:2*pi; %x的步长以及范围从0到2*pi y=cos(x).*(0.5+3*sin(x)./(1+x.^2)); %y的表达式 plot(x,y)%画出图形 图如下: ②考虑对整体求解cos,先求x乘以括号中的部分 x=0:2*pi/100:2*pi; %x的步长以及范围从0到2*pi y=cos(x.*(0.5+3*sin(x)./(1+x.^2))); %y的表达式 plot(x,y) %画出图形

图如下: 2、产生8×6阶的正态分布随机数矩阵R1, 求其各列的平均值和均方差。并求该矩阵全体数的平均值和均方差。 第二题的matlab源程序如下: R1=randn(8,6) %产生正态分布随机矩阵 R1 = 1.0933 -0.7697 1.5442 -0.1924 1.4193 0.2157 1.1093 0.3714 0.0859 0.8886 0.2916 -1.1658 -0.8637 -0.2256 -1.4916 -0.7648 0.1978 -1.1480 0.0774 1.1174 -0.7423 -1.4023 1.5877 0.1049 -1.2141 -1.0891 -1.0616 -1.4224 -0.8045 0.7223 -1.1135 0.0326 2.3505 0.4882 0.6966 2.5855 -0.0068 0.5525 -0.6156 -0.1774 0.8351 -0.6669 1.5326 1.1006 0.7481 -0.1961 -0.2437 0.1873 aver=(sum(R1(1:end,1:end)))./8 %产生各行的平均值 aver = 0.0768 0.1363 0.1022 -0.3473 0.4975 0.1044 a=std(R1(1:end,1:end)) %产生各行的均方差也就是标准差 a = 1.0819 0.8093 1.3456 0.8233 0.8079 1.2150 aver1=(sum(R1(:)))./48 %全体数的平均值 aver1 =

Matlab编程与应用习题和一些参考答案

Matlab 上机实验一、二 3.求下列联立方程的解???????=+-+-=-+=++-=--+4 1025695842475412743w z y x w z x w z y x w z y x >> a=[3 4 -7 -12;5 -7 4 2;1 0 8 -5;-6 5 -2 10]; >> b=[4;4;9;4]; >> c=a\b 4.设???? ??????------=81272956313841A ,??????????-----=793183262345B ,求C1=A*B’;C2=A’*B;C3=A.*B,并求上述所有方阵的逆阵。 >> A=[1 4 8 13;-3 6 -5 -9;2 -7 -12 -8]; >> B=[5 4 3 -2;6 -2 3 -8;-1 3 -9 7]; >> C1=A*B' >> C2=A'*B >> C3=A.*B >> inv(C1) >> inv(C2) >> inv(C3) 5.设 ?? ????++=)1(sin 35.0cos 2x x x y ,把x=0~2π间分为101点,画出以x 为横坐标,y 为纵坐标的曲线。 >> x=linspace(0,2*pi,101); >> y=cos(x)*(0.5+(1+x.^2)\3*sin(x)); >> plot(x,y,'r') 6.产生8×6阶的正态分布随机数矩阵R1, 求其各列的平均值和均方差。并求该矩阵全体数的平均值和均方差。 (mean var ) a=randn(8,6) mean(a) var(a) k=mean(a) k1=mean(k) i=ones(8,6) i1=i*k1 i2=a-i1 i3=i2.*i2 g=mean(i3) g2=mean(g)

MATLAB程序设计及应用(第二版)课后实验答案

Matlab 课后实验题答案 实验一 MATLAB 运算基础 1. 先求下列表达式的值,然后显示MATLAB 工作空间的使用情况并保存全部变量。 (1) 0 12 2sin851z e =+ (2) 221 ln(1)2z x x = ++,其中2120.45 5i x +??=??-?? (3) 0.30.330.3sin(0.3)ln , 3.0, 2.9,,2.9,3.022a a e e a z a a --+= ++=-- (4) 22 42011 122123t t z t t t t t ?≤=0&t<1).*(t.^2)+(t>=1&t<2).*(t.^2-1)+(t>=2&t<3) .*(t.^2-2*t+1) 2. 已知:

1234413134787,2033657327A B --???? ????==???? ????-???? 求下列表达式的值: (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] 解: M 文件: 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(3) A*B A.*B A^3 A.^3 A/B B\A [A,B] [A([1,3],:);B^2] 3. 设有矩阵A 和B 1234 53 166789101769,11 121314150 23416171819209 7021222324254 1311A B ???? ????-??? ?????==-??? ? ???????????? (1) 求它们的乘积C 。 (2) 将矩阵C 的右下角3×2子矩阵赋给D 。 (3) 查看MATLAB 工作空间的使用情况。 解:. 运算结果: E=(reshape(1:1:25,5,5))';F=[3 0 16;17 -6 9;0 23 -4;9 7 0;4 13 11]; C= E*F H=C(3:5,2:3) C = 93 150 77

Matlab作业习题与答案详解(附程序)

clear all;clc;close all; x=-10:0.01:20; y=4*sin(x)./x; ymin=min(y) 二、蒙特卡罗算法的数值计算 当前的油位高度是2.3米,见图1。模拟油流进储油罐的过程(图维数任选),请计算罐内油量。三维的效果图参见图2。储油罐由两部分组成,中间是圆柱体,两端是球罐体。(本题简化自2011年UCMCM A题《储油罐的变位识别与罐容表标定》,细节参见原题原题附件2 cumcm2010A.doc。) 图1

图2 主程序: clc; clear all; close all; center1=[-3.375,0,1.5]; %左球罐中心center2=[3.375,0,1.5]; %右球罐中心 n=10000; %每次的撒点数 delta=0.02; %层高 h=3; en=h/delta; Show; %画出油罐 for i=0:en-1 x=(rand(1,n)-0.5)*10; %随机生成n个点

y=(rand(1,n)-0.5)*h; z=(rand(1,n)*delta+i*delta); Z=[x;y;z]; [dis1 dis2]=juli(center1,center2,Z); %算出各点对应的距离 index=find(((x>-4&x<4)&dis2<1.5)|(x<-4|x>4)&dis1<1.625); %找出在罐内的点 plot3(x(index),y(index),z(index),'.k'); %画出在罐内的点 drawnow end 子程序1: function [dis1 dis2]=juli(a,b,q) d11=q(1,:)-a(1); d12=q(2,:)-a(2); d13=q(3,:)-a(3); d1=sqrt(d11.^2+d12.^2+d13.^2); d21=q(1,:)-b(1); d22=q(2,:)-b(2);

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)

12345678910 0.511.522.533.54x 10 6 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

(完整版)matlab基础练习题(带答案)

Matlab 基础练习题 常量、变量、表达式 1、 MATLAB 中,下面哪些变量名是合法的?( ) (A )_num (B )num_ (C )num- (D )-num 2、 在MA TLAB 中,要给出一个复数z 的模,应该使用( )函数。 (A )mod(z) (B )abs(z) (C )double(z) (D )angle(z) 3、 下面属于MATLAB 的预定义特殊变量的是?( ) (A )eps (B )none (C )zero (D )exp 4、 判断:在MA TLAB 的内存工作区中,存放一个英文字符 'a' 需要占用1个字节,存放 一个中文字符‘啊’需要占用2个字节。( 错,都是2个字节 ) 5、 判断:MA TLAB 中,i 和j ( 对 ) 6、 判断:MA TLAB 中,pi 代表圆周率,它等于3.14。( 错,后面还有很多位小数 ) 7、 在MA TLAB 中,若想计算的5 1)3.0sin(21+= πy 值,那么应该在MA TLAB 的指令窗中 输入的MA TLAB 指令是__y1=2*sin(0.3*pi)/(1+sqrt(5))_。 8、 在MA TLAB 中,a = 1,b = i ,则a 占_8__个字节,b 占_16_个字节,c 占________字 节。 9、 在MA TLAB 中,inf 的含义是__无穷大__,nan 的含义是__非数(结果不定)___。 数组 1、 在MA TLAB 中,X 是一个一维数值数组,现在要把数组X 中的所有元素按原来次序 的逆序排列输出,应该使用下面的( )指令。 (A )X[end:1] (B )X[end:-1:1] (C )X (end:-1:1) (D )X(end:1) 2、 在MA TLAB 中,A 是一个字二维数组,要获取A 的行数和列数,应该使用的MATLAB 的命令是( )。 (A )class(A) (B )sizeof(A) (C )size(A) (D )isa(A) 3、 在MATLAB 中,用指令x=1:9生成数组x 。现在要把x 数组的第二和第七个元素都 赋值为0,应该在指令窗中输入( ) (A )x([2 7])=(0 0) (B )x([2,7])=[0,0] (C )x[(2,7)]=[0 0] (D )x[(2 7)]=(0 0) 4、 在MA TLAB 中,依次执行以下指令:clear;A=ones(3,4); A(:)=[-6:5];这时, 若在指令窗中输入指令b=A(:,2)',那么,MATLAB 输出的结果应该是( ) (A )b = -3 -2 -1 (B )b = -2 -1 0 1 (C )b = -5 -1 3 (D )b = -5 -2 1 4 5、 在MA TLAB 中,A = 1:9,现在执行如下指令L1 = ~(A>5),则MATLAB 的执行结果应 该是L1 =___ 1 1 1 1 1 0 0 0 0___。

实验三MATLAB程序设计并且附有答案

实验三(1)、MATLAB程序设计 一、实验目的 1、掌握建立和执行M文件的方法 2、掌握利用if语句和switch语句实现选择结构的方法 二、实验内容及步骤 1、输入一个百分制成绩,要求输出成绩等级A、B、C、D、E。 其中90分~100分为A,80分~89分为B,70分~79为C, 60分~69分为D,60分以下为E。 要求:1)分别用if语句和switch语句实现a=input('please input the score:'); if mod(a,==0 &a>=0&a<=100; switch (floor(a/10)) case 9 disp('A'); case 8 disp('B'); case 7 disp('C'); case 6 disp('D'); otherwise disp('E'); end else disp('输入的成绩不合理') end double x; x=input('Input x please:'); if mod(x,~=0 || x>100 || x<0 disp('ê?è?μ?3é?¨2?o?àí'); elseif x>=90 & x<=100 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<60

disp('E'); end 2)对不合理的成绩应输出出错信息“输入的成绩不 合理”(若成绩出现小数,则只能是“.5”) 2、设计程序,完成两位数的加、减、乘、除四则运算,即产 生两个两位随机整数,再输入一个运算符号,做相应的运 算,显示相应的结果,并要求结果显示类似于“a=x+y=34”。 x=randint(1,1,[10 99]);或者x=round(rand(1)*100) y=randint(1,1,[10 99]);或者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 2 2 6,0 56, 1, y χχχχ χχχχχ χχ ?+-<≠ ? =-+≤≠≠? ?-- ? 且-3 0<10,2且3 其他 要求:用if语句实现,分别输出x = ,,,,,,时的y值。其中

Matlab练习及答案

Matlab 练习一 1、一个三位整数各位数字的立方和等于该数本身,则称该数为水仙花数。试编写程序找到并输出全部水仙花数。 2、若一个数等于它的各个真因子之和,则称该数为完数,如6=1+2+3,所以6 是完数。求[1 500]之间的全部完数。 3、写一个函数pifun 计算下列级数: F(n)=4*(1-1/3+1/5-1/7+...) 并使用tic 和toc 指令来测量pifun(1000000)的计算时间。 4、输入一个百分制成绩,要求输出成绩等级为A~E,即90~100 为A,80~89 为B,70~79 为C,60~69 为D,60 以下为E。 5、输入x,y 的值,并将它们的值互换后输出。 6、某商场对顾客所购买的商品实行打折销售,标准如下(商品价格用price 来表示): price<200 没有折扣;200≤price<500 3%折扣;500≤price<1000 5%折扣; 1000≤price<2500 8%折扣;2500≤price<5000 10%折扣;5000≤price 14%折扣 输入所售商品的价格,求其实际销售价格。 7、由指令A=rand(3,5)生成二维数组A,试求该数组中所有大于0.5 的元素的位置。 8、写一程序求1!+2!+ (10) 9、编写一个函数,找出矩阵A 中最大元素和最小元素所在的行列号。 10、从键盘输入的10 个整数中,找出第一个能被7 整除的数。若找到,打印此数后退出循环;若未找到,打印“not exist”。

function shuixian(n) %n为用户输入的一个整数n=3; W=zeros(1,n); ss=0; for m=10^(n-1):10^n-1 for i=1:n W(i)=fix(rem(m,10^(n+1-i))/10^(n-i)); end W=W.^n; for j=1:n ss=ss+W(j); end if m==ss disp(m); end ss=0; W=zeros(1,n); end 2. for m=1:500 sum=0; for n=1:m/2 if rem(m,n)==0 sum=sum+n; end end if sum==m m end end 3. n=input('请输入n值:'); tic; f=0; for i=1:n f=f+4*((-1)^(i+1))/(2*i-1) ; end f toc

matlab程序设计例题及答案

matlab程序设计例题及答案 1.编写程序:计算1/3+2/5+3/7+……+10/21 法一: s=0; for i=1:10 s=s+i/(2*i+1); end ss = 法二: sum((1:10)./(3:2:21)) ans = 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 ss = 210 3.画出y=n!的图,阶乘的函数自己编写,禁用MATLAB 自带的阶乘函数。 x=1:10; for i=1:10 try y(i)=y(i-1)*i; catch y(i)=1; end,end plot(x,y) 10612345678910 4.一个数恰好等于它的因子之和,这个数就称为完数。

例如,6的因子为1,2,3,而6=1+2+3,因此6就是一个完数。编程找出20XX以内的所有完数。 g=; for n=2:20XX 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

MATLAB程序设计题库5与答案

Matlab 及仿真 课程考试试卷(A ) 一、填空题(每小题1分,共 10分) 1.在MATLAB 命令窗口中的“≥”标志为MATLAB 的 命令行 提示符,“│”标志为 输入 提示符。 2.已知A=[1 2 3;4 5 0;7 8 9];B=[1 0 3;1 5 0;0 1 2];写出下列各指令运行的结果。 A+B ans= [2,2,6;5,10,0;7,9,11] ; A.*B ans= [1,0,9;4,25,0;0,8,18] ; A==B ans= [1,0,1;0,1,1;0,0,0] ; 3.已知A 是矩阵,求A 的对角矩阵函数是 diag ,求A 的下三角矩阵函数是 tril 。 4.MATLAB 的程序文件和Simulink 模型文件的扩展名分别是 .m 、 .mdl 。 5.MATLAB 最基本的绘图函数为 plot() 。

1. 下列哪个变量的定义是不合法的(A)。 (A) abcd-3 (B) xyz_3 (C) abcdef (D) x3yz 2.指出下列错误的指令(B)。 (A) syms a b; (B) syms a, b; (C) syms(‘a', ‘b'); (D) syms(‘a','b','positive'); 3.下列哪条指令是求矩阵的行列式的值(C)。 (A) inv (B) diag (C) det (D) eig 4.清空 Matlab 工作空间内所有变量的指令是(C)。 (A) clc (B) cls (C) clear (D) clf 5.以下哪个说法是正确的(D)。 (A)Matlab 进行数值计算的表达精度与其指令窗口中的数值显示精度相同。 (B)Matlab 指令窗口中显示的数值有效位数不能超过 7 位。 (C)输入二维数值数组时,需要用到逗号和分号,它们可以在中文状态下输入。 (D)历史指令窗口所记录的内容与 diary 指令所产生“日志”内容是不同的。

matlab课后习题答案

习题二 1.如何理解“矩阵是MATLAB最基本的数据对象”? 答:因为向量可以看成是仅有一行或一列的矩阵,单个数据(标量)可以看成是仅含一个元素的矩阵,故向量和单个数据都可以作为矩阵的特例来处理。 因此,矩阵是MATLAB最基本、最重要的数据对象。 2.设A和B是两个同维同大小的矩阵,问: (1)A*B和A.*B的值是否相等? 答:不相等。 (2)A./B和B.\A的值是否相等? 答:相等。 (3)A/B和B\A的值是否相等? 答:不相等。 (4)A/B和B\A所代表的数学含义是什么? 答:A/B等效于B的逆右乘A矩阵,即A*inv(B),而B\A等效于B矩阵的逆左乘A矩阵,即inv(B)*A。 3.写出完成下列操作的命令。 (1)将矩阵A第2~5行中第1, 3, 5列元素赋给矩阵B。 答:B=A(2:5,1:2:5); 或B=A(2:5,[1 3 5]) (2)删除矩阵A的第7号元素。 答:A(7)=[] (3)将矩阵A的每个元素值加30。 答:A=A+30; (4)求矩阵A的大小和维数。 答:size(A); ndims(A); (5)将向量t的0元素用机器零来代替。 答:t(find(t==0))=eps; (6)将含有12个元素的向量x转换成34 矩阵。 答:reshape(x,3,4); (7)求一个字符串的ASCII码。 答:abs(‘123’); 或double(‘123’);

(8) 求一个ASCII 码所对应的字符。 答:char(49); 4. 下列命令执行后,L1、L2、L3、L4的值分别是多少? A=1:9;B=10-A;... L1=A==B; L2=A<=5; L3=A>3&A<7; L4=find(A>3&A<7); 答:L1的值为[0, 0, 0, 0, 1, 0, 0, 0, 0] L2的值为[1, 1, 1, 1, 1, 0, 0, 0, 0] L3的值为[0, 0, 0, 1, 1, 1, 0, 0, 0] L4的值为[4, 5, 6] 5. 已知 23100.7780414565532503269.5454 3.14A -????-??=????-?? 完成下列操作: (1) 取出A 的前3行构成矩阵B ,前两列构成矩阵C ,右下角32?子矩阵构 成矩阵D ,B 与C 的乘积构成矩阵E 。 答:B=A(1:3,:); C=A(:,1:2); D=A(2:4,3:4); E=B*C; (2) 分别求E=10&A<25)。 答:E=10&A<25)=[1; 5]。 6. 当A=[34, NaN, Inf, -Inf, -pi, eps, 0]时,分析下列函数的执行结果:all(A), any(A),isnan(A),isinf(A),isfinite(A)。 答:all(A)的值为0

MATLAB程序设计与应用课后习题答案

西安科技大学MATLAB程序设计 专业:信息与计算科学 班级:1001班 学号:1008060129 姓名:刘仲能 2012年6月27日

实验一 2.已知: ??? ? ? ?????-= 765 3 8773443412A ,???? ? ?????--=72 3 302131 B 求下列表达式的值: (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 ????? ?? ? ????????= 2524 23 22 21 2019181716151413121110987654321A ,??????? ? ????????--=1113 4 079423096171603 B (1) 求它们的乘积 C 。 (2) 将矩阵C 的右下角3×2子矩阵赋给D 。 (3) 查看MATLAB 工作空间的使用情况 (1) (2) (3)

4.完成下列操作 (1)求[100,999]之间能被21整除的数的个数。(2)建立一个字符串向量,删除其中的大写字母。 (1)(2)

实验二 3.建立一个5×5矩阵,求它的行列式值、迹、秩和范数。 运行截图: A 矩阵的行列式值、迹、秩分别如下: 范数如下: 4.已知 ???? ? ?????--= 58 8 1252018629A 求A 的特征值及特征向量,并分析其数学意义。 运行截图:

5.下面是一个线性方程组:???? ??????= ???? ? ????????? ? ?????52.067.095.06/15 /14 /15 /14/13 /14/13/12 /1321x x x (1)求方程的解; (2)将方程右边向量元素改为0.53,在求解,并比较的变化和解的相对 变化; (3)计算系数矩阵A 的条件数并分析结论。 (2) 变大,其解中,相对未变化前的的解:x1变大,x2变小,x3变大。 (3) 由于A 矩阵的条件数很大,故当线性方程组中的b 变大时,x 也将发生很大的变

Matlab考试题库加答案

一、辨析题(共2小题,每题 5 分,共计 10 分) 二、问答题(共3小题,每题 5 分,共计 15 分) 三、计算题(共7小题,每题 5 分,共计 35 分) 四、编程题(共4小题,每题 10 分,共计 40 分) 填空题(计算部分) 1、标点符号; _______可以使命令行不显示运算结果, %——用来表示该行为注释行。 2、x为0~4pi,步长为0.1pi的向量,使用命令_______创建。 x=0:0.1*pi:4*pi 3、输入矩阵A=,使用全下标方式用A(2,2) 取出元素“-5”,使 用单下标方式用_______取出元素“-5”。 A(5) 4、符号表达式sin(2*a+t)+m中独立的符号变量为_______。 t 5、M脚本文件和M函数文件的主要区别是M脚本文件没有函数定义和M函数文件有函数定义_______。 6. 设x是一维数组,x的倒数第3个元素表示为_______; 设y为二维数组,要删除y的第34行和48列,可使用命令_______; _______; x(_end-2_) y(34,:)=[] y(:,48)=[] 7. 将变量x以Ascii文本格式存储到文件fname.txt,应使用命令_________ _; save _x 8. 在while 表达式, 语句体, End 循环语句中,表达式的值__ __时表示循环条件为真,语句体将被执行,否则跳出该循环语句; 非零 9.要从键盘读入一个字符串并赋值给变量x,且给出提示“Who is she?”,应使用命令_________; x=input(‘Who is she?’,’s’)_ 10.设A=和B=和C=均为m*n矩阵,且存在于WorkSpace 中,要产生矩阵D=,可用命令________ _, 计算可用命令________;

MATLAB编程练习(含答案很好的)

001双峰曲线图: z=peaks(40); mesh(z); surf(z) 002解方程: A=[3,4,-2;6,2,-3;45,5,4]; >> B=[14;4;23]; >> root=inv(A)*B 003傅里叶变换 load mtlb ; subplot(2,1,1); plot(mtlb); >> title('原始语音信息'); >> y=fft(mtlb); >> subplot(2,1,2); >> yy=abs(y); >> plot(yy); >> title('傅里叶变换') 004输入函数: a=input('How many apples\n','s') 005输出函数 a=[1 2 3 4 ;5 6 7 8;12 23 34 45;34 435 23 34] a = 1 2 3 4 5 6 7 8 12 23 34 45 34 435 23 34 disp(a) a = 1 2 3 4 5 6 7 8 12 23 34 45 34 435 23 34 b=input('how many people\n' ,'s')

how many people two people b = two people >> disp(b) two people >> 006求一元二次方程的根 a=1;b=2;c=3; d=sqrt(b^2-4*a*c); x1=(-b+d)/(2*a) x1 = -1.0000 + 1.4142i >> x2=(-b-d)/(2*a) x2 = -1.0000 - 1.4142i 007求矩阵的相乘、转置、存盘、读入数据A=[1 3 5 ;2 4 6;-1 0 -2;-3 0 0]; >> B=[-1 3;-2 2;2 1]; >> C=A*B C = 3 14 2 20 -3 -5 3 -9 >> C=C' C =

相关主题
文本预览
相关文档 最新文档