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

MATLAB编程练习(含答案很好的)
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 =

3 2 -3 3

14 20 -5 -9

>> save mydat C

>> clear

>> load mydat C

008编写数学计算公式:

A=2.1;B=-4.5;C=6;D=3.5;E=-5;

K=atan(((2*pi*A)+E/(2*pi*B*C))/D) K =

1.3121

009

A=[1 0 -1;2 4 1;-2 0 5];

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

>> H=2*A+B

H =

2 -1 -2

6 9 5

-3 1 12

>> M=A^2-3*B

M =

3 3 -6

2 1

3 -2

-15 -3 21

>> Y=A*B

Y =

-1 -2 -2

9 3 14

5 7 10

>> R=B*A

R =

-2 -4 -1

-2 4 14

-1 4 10

>> E=A.*B

E =

0 0 0

4 4 3

-2 0 10

>> W=A\B

W =

0.3333 -1.3333 0.6667

0.2500 1.0000 0.2500

0.3333 -0.3333 0.6667 >> P=A/B

P =

-2.0000 3.0000 -5.0000

-5.0000 3.0000 -4.0000

7.0000 -9.0000 16.0000

>> Z=A.\B

Warning: Divide by zero.

Z =

0 -Inf 0

1.0000 0.2500 3.0000

-0.5000 Inf 0.4000

>> D=A./B

Warning: Divide by zero.

D =

Inf 0 -Inf

1.0000 4.0000 0.3333

-2.0000 0 2.5000

010

a=4.96;b=8.11;

>> M=exp(a+b)/log10(a+b)

M =

4.2507e+005

011求三角形面积:

a=9.6;b=13.7;c=19.4;

>> s=(a+b+c)/2;

>> area=sqrt(s*(s-a)*(s-b)*(s-c))

area =

61.1739

012逻辑运算

A=[-1 0 -6 8;-9 4 0 12.3;0 0 -5.1 -2;0 -23 0 -7]; >> B=A(:,1:2)

B =

-1 0

-9 4

0 0

0 -23

>> C=A(1:2,:)

C =

-1.0000 0 -6.0000 8.0000 -9.0000 4.0000 0 12.3000

>> D=B'

D =

-1 -9 0 0

0 4 0 -23

>> A*B

ans =

1.0000 -184.0000

-27.0000 -266.9000

0 46.0000 207.0000 69.0000

>> C

ans =

0 0 1 0

1 0 0 0

>> C&D

ans =

1 0 0 0

0 1 0 1

>> C|D

ans =

1 1 1 1

1 1 0 1

>> ~C|~D

ans =

0 1 1 1

1 0 1 0

013矩阵运算练习:

A=[8 9 5;36 -7 11;21 -8 5]

A =

8 9 5

36 -7 11

21 -8 5

>> B

B =

-1 3 -2

2 0 3

-3 1 9

>> RT=A*B

RT =

-5 29 56

-83 119 6

-52 68 -21

>> QW=A.*B

QW =

-8 27 -10

72 0 33

-63 -8 45

>> ER=A^3

ER =

6272 3342 2944

15714 -856 5260

8142 -1906 2390 >> BF=A.^3

BF =

512 729 125

46656 -343 1331

9261 -512 125 >> A/B

ans =

3.1341

4.9634 -0.4024

-1.2561 12.5244 -3.2317

-1.9878 6.4512 -2.0366

>> EKV=B\A

EKV =

10.7195 -1.2683 3.5244

9.4756 1.5854 3.7195

4.8537 -1.4878 1.3171

>> KDK=[A,B]

KDK =

8 9 5 -1 3 -2

36 -7 11 2 0 3

21 -8 5 -3 1 9 >> ERI=[A;B]

ERI =

8 9 5

36 -7 11

21 -8 5

-1 3 -2

2 0 3

-3 1 9

014一般函数的调用:

A=[2 34 88 390 848 939];

>> S=sum(A)

S =

2301

>> min(A)

ans =

2

>> EE=mean(A)

EE =

383.5000

>> QQ=std(A)

QQ =

419.3794

>> AO=sort(A)

AO =

2 34 88 390 848 939 >> yr=norm(A)

yr =

1.3273e+003

>> RT=prod(A)

RT =

1.8583e+012

>> gradient(A)

ans =

32.0000 43.0000 178.0000 380.0000 274.5000 91.0000 >> max(A)

ans =

939

>> median(A)

ans =

239

>> diff(A)

ans =

32 54 302 458 91

>> length(A)

ans =

6

>> sum(A)

ans =

2301

>> cov(A)

ans =

1.7588e+005

>>

015矩阵变换:

A=[34 44 23;8 34 23;34 55 2]

A =

34 44 23

8 34 23

34 55 2

>> tril(A)

ans =

34 0 0

8 34 0

34 55 2

>> triu(A)

ans =

34 44 23

0 34 23

0 0 2

>> diag(A)

ans =

34

34

2

norm(A)

ans =

94.5106

>> rank(A)

ans =

3

>> det(A)

ans =

-23462

>> trace(A)

ans =

70

>> null(A)

ans =

Empty matrix: 3-by-0

>> eig(A)

ans =

80.1587

12.7671

-22.9257

>> poly(A)

ans =

1.0e+004 *

0.0001 -0.0070 -0.1107 2.3462

>> logm(A)

Warning: Principal matrix logarithm is not defined for A with nonpositive real eigenvalues. A non-principal matrix

logarithm is returned.

> In funm at 153

In logm at 27

ans =

3.1909 + 0.1314i 1.2707 + 0.1437i 0.5011 - 0.2538i

0.4648 + 0.4974i 3.3955 + 0.5438i 0.1504 - 0.9608i

0.2935 - 1.2769i 0.8069 - 1.3960i 3.4768 + 2.4663i

>> fumn(A)

??? Undefined command/function 'fumn'.

>> inv(A)

ans =

0.0510 -0.0502 -0.0098

-0.0326 0.0304 0.0255

0.0305 0.0159 -0.0343

>> cond(A)

ans =

8.5072

>> chol(A)

??? Error using ==> chol

Matrix must be positive definite.

>> lu(A)

ans =

34.0000 44.0000 23.0000

0.2353 23.6471 17.5882

1.0000 0.4652 -29.1816

>> pinv(A)

ans =

0.0510 -0.0502 -0.0098

-0.0326 0.0304 0.0255

0.0305 0.0159 -0.0343

>> svd(A)

ans =

94.5106

22.3456

11.1095

>> expm(A)

ans =

1.0e+034 *

2.1897 4.3968 1.9382

1.3154

2.6412 1.1643

1.8782 3.7712 1.6625

>> sqrtm(A)

ans =

5.2379 + 0.2003i 3.4795 + 0.2190i 1.8946 - 0.3869i

0.5241 + 0.7581i 5.1429 + 0.8288i 2.0575 - 1.4644i

3.0084 - 1.9461i

4.7123 - 2.1276i 2.1454 + 3.7589i >>

016多项式的计算:

A=[34 44 23;8 34 23;34 55 2]

A =

34 44 23

8 34 23

34 55 2

>> P=poly(A)

P =

1.0e+004 *

0.0001 -0.0070 -0.1107 2.3462

>> PPA=poly2str(P,'X')

PPA =

X^3 - 70 X^2 - 1107 X + 23462

017多项式的运算:

p=[2 6 8 3];w=[32 56 0 2];

>> m=conv(p,w)

m =

64 304 592 548 180 16 6 >> [q,r]=deconv(w,p)

q =

16

r =

0 -40 -128 -46

>> dp=polyder(w)

dp =

96 112 0

>> [num,den]=polyder(w,p)

num =

80 512 724 312 -16

den =

4 24 68 108 100 48 9

>> b=polyfit(p,w,4)

Warning: Polynomial is not unique; degree >= number of data points. > In polyfit at 74

b =

-0.6704 9.2037 -32.2593 0 98.1333

>> r=roots(p)

r =

-1.2119 + 1.0652i

-1.2119 - 1.0652i

-0.5761

018求多项式的商和余

p=conv([1 0 2],conv([1 4],[1 1]))

p =

1 5 6 10 8

>> q=[1 0 1 1]

q =

1 0 1 1

>> [w,m]=deconv(p,q)

w =

1 5

m =

0 0 5 4 3

>> cq=w;cr=m;

>> disp([cr,poly2str(m,'x')])

5 x^2 + 4 x + 3

>> disp([cq,poly2str(w,'x')])

x + 5

019将分式分解

a=[1 5 6];b=[1];

>> [r,p,k]=residue(b,a)

r =

-1.0000

1.0000

p =

-3.0000

-2.0000

k =

[]

020计算多项式:

a=[1 2 3;4 5 6;7 8 9];

>> p=[3 0 2 3];

>> q=[2 3];

>> x=2;

>> r=roots(p)

r =

0.3911 + 1.0609i

0.3911 - 1.0609i

-0.7822

>> p1=conv(p,q)

p1 =

6 9 4 12 9

>> p2=poly(a)

p2 =

1.0000 -15.0000 -18.0000 -0.0000 >> p3=polyder(p)

p3 =

9 0 2

>> p4=polyval(p,x)

p4 =

31

021求除式和余项:

[q,r]=deconv(conv([1 0 2],[1 4]),[1 1 1])

022字符串的书写格式:

s='student'

s =

student

>> name='mary';

>> s1=[name s]

s1 =

marystudent

>> s3=[name blanks(3);s]

s3 =

mary

student

>>

023交换两个数:

clear

clc

a=[1 2 3 4 5];

b=[6 7 8 9 10];

c=a;

a=b;

b=c;

a

b

24If语句

n=input('enter a number,n=');

if n<10

n

end

025 if 双分支结构

a=input('enter a number ,a=');

b=input('enter a number ,b=');

if a>b

max=a;

else

max=b;

end

max

026三个数按照由大到小的顺序排列:A=15;B=24;C=45;

if A

T=A;A=B;B=T;

elseif A

T=A;A=C;C=T;

elseif B

T=B;B=C;C=T;

end

A

C

027建立一个收费优惠系统:

price=input('please jinput the price : price=') switch fix(price/100)

case[0,1]

rate =0;

case[2,3,4]

rate =3/100;

case num2cell(5:9)

rate=5/100;

case num2cell(10:24)

rate=8/100;

case num2cell(25:49)

rate=10/100;

otherwise

rate=14/100;

end

price=price*(1-rate)

028:while循环语句

i=0;s=0;

while i<=1212

s=s+i;

i=i+1;

end

s

029,用for循环体语句:

sum=0;

for i=1:1.5:100;

sum=sum+i;

end

sum

030循环的嵌套

s=0;

for i=1:1:6;

for j=1:1:8;

s=s+i^j;

MATLAB程序设计教程(第二版)课后答案(可编辑修改word版)

MATLAB 第二版课后答案unit3-8 unit3 实验指导 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];

b=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=[];

实验二 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

matlab编程训练

matlab训练 建立一个脚本文件,用于两个变量值的互相交换。 x=input('输入变量x='); y=input('输入变量y='); z=x; x=y; y=z; x y 比较从键盘输入的两个数的大小,输出其中较大的数。(扩展,输出两个同型矩阵中对应位置较大的数) function [ y ] = ex2( x ) a=input('输入数字x='); b=input('输入数字y='); if a>b fprintf('较大数为%d\n',a) elseif a

c = input('请输入常数项: '); discriminant = b^2 - 4 * a * c; if discriminant > 0 x1 = (-b + sqrt(discriminant)) / (2*a); x2 = (-b - sqrt(discriminant)) / (2*a); fprintf('x1 = %f\n', x1); fprintf('x2 = %f\n', x2); elseif discriminant == 0 x1 = ( -b ) / (2*a); fprintf('x1 = x2 = %f\n', x1); else real_part = (-b) / (2*a); imag_part = sqrt( abs(discriminant)) / (2*a); disp('此方程无实根:'); fprintf('x1 = %f + i %f \n',real_part, imag_part); fprintf('x1 + %f - i %f \n', real_part, imag_part); end 编写一个函数求圆的面积与周长,并编写测试脚本文件测试结果。function ex4 r=input('请输入此圆的半径: '); S=pi*r; C=2*pi*r; fprintf('此圆的面积是:'); disp(S) fprintf('此圆的周长是:');

《MATLAB程序设计与应用(刘卫国)》(第二版) 答案

《MATLAB程序设计与应用(刘卫国)》(第二版)实验一MATLAB运算基础 1.(1) z1=2*sin(pi*85/180)/(1+exp(2)) (2)x=[2,1+2i;-0.45,5]; z2=log(x+sqrt(1+x.^2))/2 (3)a=-3.0:0.1:3.0; z3=0.5*(exp(0.3*a)-exp(-0.3*a)).*sin(a+0.3)+log((0.3+a)/2) (4)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) 2. A=[12,34,-4;34,7,87;3,65,7]; B=[1,3,-1;2,0,3;3,-2,7]; (1)a=A+6*B b=A-B+eye(size(A)) %I=eye(size(A)) (2)c=A*B d=A.*B (3)e=A^3 f=A.^3 (4)g=A/B h=B\A (5)m=[A,B] n=[A([1,3],:);B^2] 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]; (1)C=A*B (2)D=C(3:end,2:end) 4.(1) a=100:999; b=rem(a,21)==0; c=find(b); d=length(c) (2)ch='Just as Bianhaiman said,Xiehong is ...'; e=find(ch>='A'&ch<='Z'); ch(e)=[] 实验二 MATLAB矩阵分析与处理 1.E=eye(3);

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 语言程序设计基础(2)

%第六章微分方程问题的解法 % 微分方程的解析解方法 % 常微分方程问题的数值解法 % 微分方程问题算法概述 % 四阶定步长Runge-Kutta算法及MATLAB 实现 % 一阶微分方程组的数值解 % 微分方程转换 % 特殊微分方程的数值解 % 边值问题的计算机求解 % 偏微分方程的解 % 6.1 微分方程的解析解方法 % y=dsolve(f1, f2, …, fm ,'x') % syms t; u=exp(-5*t)*cos(2*t+1)+5; % uu=5*diff(u,t,2)+4*diff(u,t)+2*u % syms t y; % y=dsolve(['D4y+10*D3y+35*D2y+50*Dy+24*y='... % '87*exp(-5*t)*cos(2*t+1)+92*exp(-5*t)*sin(2*t+1)+10'],'y(0)=3','Dy(0)=2','D2y(0)=0','D3y(0)=0') % [x,y]=dsolve('D2x+2*Dx=x+2*y-exp(-t)',... % 'Dy=4*x+3*y+4*exp(-t)') % syms t x; % x=dsolve('Dx=x*(1-x^2)+1') % Warning: Explicit solution could not be found; implicit solution returned. % > In D:\MATLAB6p5\toolbox\symbolic\dsolve.m at line 292 % x = % t-Int(1/(a-a^3+1),a=``..x)+C1=0 % 故只有部分非线性微分方程有解析解。 % 6.2 微分方程问题的数值解法 % 6.2.1 微方程问题算法概述 %Euler算法% %function [outx,outy]=MyEuler(fun,x0,xt,y0,PointNum) % fun 表示f(x,y); x0,xt:自变量的初值和终值; % y0:函数在x0处的值,其可以为向量形式; % PointNum表示自变量在[x0,xt]上取的点数 % if nargin<5 |PointNum<=0 %PointNum 默认值为100 % PointNum=100; % end % if nargin<4 % y0默认值为0

《MATLAB程序设计》复习资料

Matlab 习题及复习要点 1. Matlab 的英文组成;程序和变量的命名规则; 在MATLAB 语言中是区分字母大小的,也就是说,大写字母和小写字母代表的东西是不同的。 2.Matlab 中注释、关键词等的显示颜色;如何设置当前路径、如何设置搜索路径(例如第一次上机练习过的,新建的“D:\temp ”目录中有脚本文件abc.m ,若要能在命令窗口输入abc 执行则..); 3.熟悉Matlab 中的几种数据类型(int8、double 、logical 等); 4.在MATLAB 中计算数学公式(如三角函数、对数、开根号等)的表达; 5.掌握数组的几个操作(裁剪、扩增、eye 、zeros 等)、对角阵指令、均匀分布随即向量指令;数组中行和列的分隔符; 6. 在循环结构中的几个命令:break 、continue 等; 7. 已知字符'A'、'Z'、'a'、'z'的ASCII 码分别为65、90、97、122,str1为全为大写字母的字符串,采用什么命令可将该字符串转换成小写。 8. 在MATLAB 中求解线性方程组=Ax b 可采用什么指令; 9. 掌握基本运算符,例如*、.*、/、./、^、.^ 的区别 10.读懂逻辑表达式,会写出逻辑表达式的结果(0或1) 11. 掌握集中循环结构,尤其if..elseif…else…end 和swich…case 结构的语法,要准确。 12. 会编写分段函数的程序; x 和y 满足如下关系: 221211212x x y x x x x ?? 编写函数y=f(x),用于计算上述分段函数。 13. 绘图时采用的几个命令的掌握:hold on 、plot 、plot3 14*.用语句[x, y]=meshgrid(a:b)构建网格数据,例子如下: 示例一: x=-3:1:3;y=-2:1:2; [X,Y]= meshgrid(x,y); 这里meshgrid (x ,y )的作用是分别产生以向量x 为行,向量y 为列的两个大小相同的矩阵,其中x 的行是从-3开始到3,每间隔1记下一个数据,并把这些数据集成矩阵X ;同理y 的列则是从-2到2,每间隔1记下一个数据,并集成矩阵Y 。即 X= -3 -2 -1 0 1 2 3 -3 -2 -1 0 1 2 3 -3 -2 -1 0 1 2 3

刘卫国版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程序设计教程(第二版)第三章实验报告下载

大学社区网收集整理https://www.360docs.net/doc/709231332.html, 评分 日期湖南商学院北津学院实验报告 课程名称MATLAB科学计算编程语言 实验名称MATLAB程序设计 专业班级信科1121班 姓名xxx 学号xxx 实验日期2012年11月5日 2012—2013学年度第一学期 一、实验目的 1.掌握利用if语句、switch语句实现选择结构的方法。 2.掌握利用for语句、while语句实现循环结构的方法。 3.熟悉利用向量运算来代替循环操作的方法并理解MATLAB程序设计的特点 4.掌握定义和调用MATLAB函数的方法。

二、实验环境 系统windows7旗舰版 处理器Intel(R)Core(TM)i7-3610M CPU @ 2.30GHz 安装内存 4.00GB (3.07GB 可用)系统类型64位操作系统运行环境 MATLAB 5.3 三、实验基本原理 利用上课所学知识解决以下问题: 1.从键盘输入一个3位数的整数,将它反向输出。如输入639,输出936。 2.输入一个百分制成绩,要求输出成绩等级A、B、C、D、E。其中90~100分为A,80~89分为B,70~79分为C,60~69分为D,60分以下为E。 要求: (1)分别用if 语句和switch 语句实现。 (2)输入百分制成绩后要判断该成绩的合理性,对不合理的成绩应输出出错信息。3.输入20个数,求其中最大数和最小数。要求分别用循环结构和调用MATLAB 的max 函数、min 函数来实现。 4.23.0ln )3.0sin(23.03.0a a e e y a a +++?=?,当a 取-3.0、-2.9、-2.8、…、2.8、2.9、 3.0时,求各点的函数值。要求分别用顺序结构和循环结构实现。 5.当n 分别取100、1000、10000时,求下列各式的值: (1)) 6...(n 1...31211122222π=+++++(2)) 2...()12)(12()2)(2(...756653443122π =??? ?????+?????????××????????××????????××n n n n 要求分别用循环结构和向量运算(使用sum 函数)来实现。 6.建立5×6矩阵,要求输出矩阵第n 行元素。当n 值超过矩阵的行数时,自动转为输出矩阵最后一行元素,并给出出错信息。 7已知,o999 ) 20()30()40(f f f y += (1)当)5ln(10)(2 ++=n n n f 时,y 的值是多小。 (2)当+×+×+×=433221)(n f …+)1(+×n n 时,y 的值是多小。 8.先用函数的递归调用定义一个函数文件求 ∑=n i m i 1,然后调用该函数文件求

Matlab语言程序设计

MATLAB 语言程序设计 1、应用题(20 分) 某工厂生产A和B两种产品,它们需要经过三种设备的加工,工时如表1所列。设备一、二、三每天可使用的时间分别不超过12、10和8小时。产品A和B的利润随市场的需求有所波动,如果预测未来某个时期内A和B的利润分别为4000元/吨和3000元/吨,问每天应安排产品A、B各多少吨,才能使工厂获利最大? 表 1 生产产品工时表 产品设备一设备二设备三 A/(小时/吨) 3 3 4 B/(小时/吨) 4 3 2 设备每天最多可工作时数/小时12 10 8 请写出具体解决方案,并编写该解决方案的具体MATLAB程序代码。 假设每天应安排生产产品A和B分别为和吨,依题意可建数学模型如下: max z=4000x 1+ 3000x2 3x1+ 4x2≤12 3x1+ 3x2≤10 4x1+ 2x2≤8 x1≥0, x2≥0 首先将目标函数转换为标准形式:min z=-4000-3000 M文件如下: f = [-4000;-3000]; A = [3 4;3 3;4 2]; b = [12;10;8]; lb = zeros(2,1); [x,fval] = linprog(f,A,b,[],[],lb) 结果如下图1所示: 图1

2、结合MATLAB 图像的读写知识,请你写出具体MATLAB 图像读写方法,结合实例,给出图像读写步骤。(20分) 读写方法: imfinfo(FileNAme) %从FileNAme中获取或显示图像文件的特征数据 [X,cmap]=imread(FileNAme) %读取变址图像的数据矩阵与伴随色图,并分别送给X 和cmap X=imread(FileNAme) %从FileNAme中读取强度图像或真彩图像的数据矩阵并送给X imwrite(X,cmap,FileName,Parameter,Value) %将变址图像写入文件 imwrite(X ,FileName,Parameter,Value)%将强度图像或真彩图像写入文件 [例2-1] M文件如下: I=imread('m2.png'); imwrite(I,'m2.tif'); [X,cmap]=imread('m2.tif'); image(X); colormap(cmap); axis image off; 结果如下图2所示: 图2 3、结合课本第四章所提供的18种绘图方法,请实现其中8种绘图,提供程序代码及所绘制的图形。(30分)

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

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习题及复习要点 1.Matlab的英文组成;程序和变量的命名规则; 在MATLAB语言中是区分字母大小的,也就是说,大写字母和小写字母代表的东西是不同的。 2.Matlab中注释、关键词等的显示颜色;如何设置当前路径、如何设置搜索路径(例如第一次上机练习过的,新建的“D:\temp”目录中有脚本文件abc.m,若要能在命令窗口输入abc执行则..); 3.熟悉Matlab中的几种数据类型(int8、double、logical等); 4.在MATLAB中计算数学公式(如三角函数、对数、开根号等)的表达; 5.掌握数组的几个操作(裁剪、扩增、eye、zeros等)、对角阵指令、均匀分布随即向量指令;数组中行和列的分隔符; 6. 在循环结构中的几个命令:break、continue等; 7. 已知字符'A'、'Z'、'a'、'z'的ASCII码分别为65、90、97、122,str1为全为大写字母的字符串,采用什么命令可将该字符串转换成小写。 Ax b可采用什么指令; 8. 在MATLAB中求解线性方程组 9. 掌握基本运算符,例如*、.*、/、./、^、.^ 的区别 10.读懂逻辑表达式,会写出逻辑表达式的结果(0或1) 11. 掌握集中循环结构,尤其if..elseif…else…end和swich…case结构的语法,要准确。 12. 会编写分段函数的程序; x和y满足如下关系: 编写函数y=f(x),用于计算上述分段函数。 13. 绘图时采用的几个命令的掌握:hold on、plot、plot3 14*.用语句[x, y]=meshgrid(a:b)构建网格数据,例子如下: 示例一: x=-3:1:3;y=-2:1:2; [X,Y]=?meshgrid(x,y); 这里meshgrid(x,y)的作用是分别产生以向量x为行,向量y为列的两个大小相同的矩阵,其中x的行是从-3开始到3,每间隔1记下一个数据,并把这些数据集成矩阵X;同理y的列则是从-2到2,每间隔1记下一个数据,并集成矩阵Y。即X= -3 -2 -1 0 1 2 3 -3 -2 -1 0 1 2 3 -3 -2 -1 0 1 2 3 -3 -2 -1 0 1 2 3 -3 -2 -1 0 1 2 3 Y = -2 -2 -2 -2 -2 -2 -2 -1 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0

matlab程序设计与应用第二版习题答案

matlab程序设计与应用第二版习题答案【篇一:matlab程序设计与应用(第二版)实验答案】 %实验一 matlab运算基础 %第1题 %(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=0t1)+(t.^2-1).*(t=1t2)+(t.^2-2*t+1).*(t=2t3) %第2题 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] %第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 f=size(c) d=c(f(1)-2:f(1),f(2)-1:f(2)) whos %第4题 %(1):

a=100:999; b=rem(a,21); c=length(find(b==0)) %(2): a=lsdhksdlkklsdkl; k=find(a=aa=z); a(k)=[] %实验二 matlab矩阵分析与处理 %第1题 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] %第2题 h=hilb(5) p=pascal(5) hh=det(h) hp=det(p) th=cond(h) tp=cond(p) %第3题 a=fix(10*rand(5)) h=det(a) trace=trace(a) rank=rank(a) norm=norm(a) %第4题 a=[-29,6,18;20,5,12;-8,8,5] [v,d]=eig(a) %数学意义略 %第5题方法一 %(1): a=[1/2,1/3,1/4;1/3,1/4,1/5;1/4,1/5,1/6]; b=[0.95,0.67,0.52]; x=inv(a)*b %(2):

05级通信工程、电子信息工程《MATLAB语言程序设计》考试卷

安徽农业大学2006―2007学年第二学期 《MATLAB 语言程序设计》试卷(A 卷) 考试形式: 闭卷笔试,2小时 适用专业: 05级通信工程、电子信息工程 一、填空题(本题满分30分,每空3分) 1. 设有程序 A=[1,2,3,4;4,3,2,1;1, -2 ,1, -2];B=[3,1,-1;0,4,2];A1=A(:,[1 3]); M=size(A1)+ length(B(:,2)) 将下列命令的运行结果填在横线上 M= ;A1+B' = . 2. A=[1,2,3,4;2,3,4,5;3,4,5,6]; A1=sum(A<4,2);A([2,3],:)=[],A2=A A1= ; A2= ; 3.P=[1,2,3,4;3,0,1,2];max(P)= ;mean(P,2)= 院: 专业班级: 姓名: 学号: 装 订 线

二、(本题满分12分)试编写计算程序 V; 与特征向量 U 的特征值 B 2 A 求 (4). E; 5 B A 2B BX 解矩阵 . (3) ); A B) (B(A R R 的秩 A (2). |; B) 2 B)(A (A | D (1). , 6 2 1 5 7 2 , 2 1 5 1 2 3 3 2 1 1 1 + + = + = + - = ? ? ? ? ? ? ? - = ? ? ? ? ? ? ? = - - T T T B A 方程 设

三、(本题满分8分) 的程序组写出求解超定线性方程?????? ?=++-=++=--=++1 21212:321 321321 321x x x x x x x x x x x x 四、(本题满分16分)运用符号运算功能写出下列各题Matlab 程序 解求方程03.12=-x e x Adx dx A d x wx x x xe A x ??? ????=-1 022,,cos )sin(sin .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 倍。 ¥ 对系统频率特性的分析

练习3 MATLAB程序设计

练习4 MATLAB 程序设计 一、目的和要求 (1)掌握MAM 的程序流程控制结构。 (2)掌握M 文件的结构。 (3)掌握函数调用和参数传递。 (4)了解程序性能剖析窗口。 (5)掌握利用函数句柄进行数值分析。 二、内容和步骤 MATLAB 的语法规则简洁,编程效率高,作为一个完整的程序语言,MATLAB 也有其各种程序流程控制、文件格式和函数调用的规则,通过函数的调用就能够组成庞大的程序,完成复杂的功能。 1.使用程序流程控制 Fibonacci 数列的各元素为:1,1,2,3,5,8,…,满足以下关系: 2 1211 1--+===n n n F F F F F 用M 函数文件实现,数列的元素个数为输入变量。 (l )按M 函数文件格式创建文件开头。 function f=shiyan0501(n) %SHIYAN0501 Fibonacci % Fibonacci 数列 % n 元素个数 % f 构成Fibonacci 数列向量 (2)用While 循环实现程序功能。 f(1)=1;f(2)=1;i=2; while i<=n f(i+1)=f(i-1)+f(i); i =i+1; end 在命令窗口输入调用命令调用函数,元素个数n=10, 结果:( ) (3)使用for 循环实现,重新编制上述函数。 结果:(

) (4)当Fibonacci 数列中某个元素大于50时,用“break ”命令退出循环结构,修改程序如下: 结果:( ) (5)将该.m 文件生成P 码文件: >>pcode shiyan0501 将 shiyan0501.m 删除,重新调用函数文件,执行结果如下: 结果:( ) 2.使用函数调用 计算 2 5 21 22 2432(2)!arcsin ,143 1645 2 (!)(21) n n x x n x x x x n n +???≈+ + ++

Matlab程序设计教程(第二版)刘卫国课后参考答案解析

第二章 1 求下列表达式的值。 (1) w=sqrt(2)*(1+0.34245*10^(-6)) (2) a=3.5; b=5; c=-9.8; x=(2*pi*a+(b+c)/(pi+a*b*c)-exp(2))/tan(b+c)+a (3) a=3.32; b=-7.9; y=2*pi*a^(2)*[(1-pi/4)*b-(0.8333-pi/4)*a] (4) t=[2,1-3*i;5,-0.65]; z=1/2*exp(2*t)*log(t+sqrt(1+t^(2))) 2 求下列表达式 A=[-1,5,-4;0,7,8;3,61,7]; B=[8,3,-1;2,5,3;-3,2,0]; (1) A+6*B A^2-B+eye (2) A*B A.*B B.*A (3) A/B B\A (4) [A,B] [A([1,3],:);B^2] 3 根据已知,完成下列操作 (1) A=[23,10,-0.778,0;41,-45,65,5;32,5,0,32;6,-9.54,54,3.14]; K=find(A>10&A<25); A(K) (2) A=[23,10,-0.778,0;41,-45,65,5;32,5,0,32;6,-9.54,54,3.14]; B=A(1:3,:) C=A(:,1:2) D=A(2:4,3:4) E=B*C (3) E

f=input('输入一个数:','s'); f(end :-1:1) 2 用if语句 score=input('请输入成绩:'); if score>=90&&score<=100 disp('A'); elseif score>=80&&score<=89 disp('B'); elseif score>=70&&score<=79 disp('C'); elseif score>=60&&score<=69; disp('D'); elseif score<60&&score>=0; disp('E'); else disp('出错'); end 用switch语句 score=input('请输入成绩:'); switch fix(score/10) case {9,10} disp('A'); case {8} disp('B'); case {7} disp('C'); case {6} disp('D'); case {0,1,2,3,4,5} disp('E'); otherwise disp('出错'); end 第四章1题 1) X=0:10; Y=x-x.^3/6; P lot(x,y)

相关文档
最新文档