Matlab实验及答案

阅读: 评论:0

2024年8月28日发(作者:)

Matlab实验及答案

实验一、MATLAB基本操作

一、实验目的

2.学习使用图形函数计算器命令funtool及其环境。

3. 学习使用help命令进行帮助

4. 掌握向量与矩阵的创建以及矩阵的基本操作

5. 掌握数组与矩阵的概念

二、 实验内容

熟悉Matlab操作环境,认识命令窗口、内存工作区窗口、历史命令窗口;学会

使用format命令调整命令窗口的数据显示格式;学会使用变量和矩阵的输入,

并进行简单的计算;掌握数组与矩阵的概念;学会使用help命令进行帮助;学

会使用who和whos命令查看内存变量信息;学会使用图形函数计算器funtool;

1. 命令窗 口的简单使用

(1) 简单矩阵的输入 (自由创建)

x=[1 3 5;2 4 6]

x =

1 3 5

2 4 6

(2) 求[12+2×(7-4)]÷3

2

的算术运算结果,总结算术运算符先级

[12+2*(7-4)]/3^2

ans =

2

2. 有关向量、矩阵或数组的一些运算

(1) 设A=15;B=20;求C=A+B与c=a+b的区别

A=15;B=20;

>> C=A+B

C =

35

>> c=a+b

Undefined function or variable 'a'.

(2) 设A=[1 2 3;4 5 6;7 8 9],B=[9 8 7;6 5 4;3 2 1];求A*B与A.*B,

分析原因?

(A*B是两个矩阵相乘,A.*B是对应元素相乘)

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

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

>> A*B

ans =

30 24 18

84 69 54

138 114 90

>> A.*B

ans =

9 16 21

24 25 24

21 16 9

(3) 设a=10,b=20;求i=a/b与j=ab

a=10;

>> b=20;

>> i=a/b

i =

0.5000

>> j=ab

j =

2

(4) 设a=[1 -2 3;4 5 -4;5 -6 7]

请设计出程序,分别找出小于0的矩阵元素的线性索引以及行列索引

(sub2ind/ind2sub)。(find())

并将其单下标转换成全下标。

clear,clc

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

b=find(a<0)

[x,y]=ind2sub(size(a),find(a<0))

Y=sort(a, 1, ‘descend’)

2.对矩阵按列从大到小 排列 (sort())

(5) 在MATLAB命令行窗口运行A=[1,2;3,4]+i*[5,6;7,8];看结果如何?如

果改成运行A=[1,2;3,4]+i[5,6;7,8],结果又如何?

>> A=[1,2;3,4]+i*[5,6;7,8]

A =

3.5000 5.0000

6.5000 8.0000

>> A=[1,2;3,4]+i[5,6;7,8]

A=[1,2;3,4]+i[5,6;7,8]

Error: Unbalanced or misused parentheses or brackets.

前面那个是虚数矩阵,后面那个出错

(6) 请写出完成下列计算的指令:

a=[1 2 3;3 4 2;5 2 3],求a^2=?,a.^2=?

a^2= 22 16 16

25 26 23

26 24 28

a.^2=

1 4 9

9 16 4

25 4 9

(7) 有一段指令如下,请思考并说明运行结果及其原因

clear

X=[1 2;8 9;3 6];

X( : ) 转化为列向量

>> clear

>> X=[1,2;8,9;3,6];

>> X(:)

ans =

1

8

3

2

9

6

(8) 使用help命令,明白什么是稀疏矩阵sparse( ),并用采用两种方法创

建下面的稀疏矩阵(其中一种方法采用help所提供的三元组方法创建稀

疏矩阵

(S = SPARSE(i,j,s,m,n)))

2 0 8 0

0 0 0 1

0 4 0 0

6 0 0 0

另:

1.B=该稀疏矩阵上下反转

2.该矩阵变维,C为2*8矩阵,D为3*8矩阵,C?D?

方法一:

clear,clc

data=[2 8 1 4 6];

ir=[1 1 2 3 4 ];

jc=[1 3 4 2 1];

s=sparse(ir,jc,data,4,4);

full(s)

方法二:不用三元组法

clear,clc

a=zeros(4,4);

a(1,[1,3])=[2,8];

a(2,4)=1;

a(3,2)=4;

a(4,1)=6;

a

B=flipud(a)

C=reshape(a,2,8)

(9) 学会使用图形函数计算器(funtool 命令),并进行下列计算:

1.求函数的符号导数

y=sin(x);

2.求下列函数的符号积分

(1) y=1/sqrt(1-x^2);

3.求两个函数之间的操作

求和

(1) sin(x)+cos(x)

乘积

(1) exp(-x)*sin(x)

(2)

(1) sin(x)/cos(x);

求复合函数

(1) y=exp(u) u=sin(x)

(10) 总结who,whos,clc,clear命令

三、设计提示

1.初次接触Matlab应该注意函数表达式的文本式描述。

2.在使用图形函数计算器funtool时,注意观察1号和2号窗口中函数的

图形。

3. help帮助命令的使用

3. 向量与矩阵的创建

实验二:数组运算及线型方程组的求解

二、实验内容

1.“:”号的用法。用“:”号生成行向量a=[1 2 3 4 5 6 7 8 9 10]、

b=[5 3 1 -1 -3 -5];用线性等分命令linspace重新生成上述的a和b向量。

另,在100和10000之间用对数等分命令logspace生成10维的向量c。

ak=logspace(2,4,10) linspace(1,10,10) linspace(5,-5,6)

2. 已知多项式a(x)=x

2

+2x+3,b(x)=4x

2

+5x+6,求a,b的积并微分。

>> a=[1,2,3];b=[4,5,6];polyder(a,b)

ans =

16 39 56 27

>> poly2str(ans,'x')

ans =

16 x^3 + 39 x^2 + 56 x + 27

3.生成下列矩阵,取出方框内的数组元素

a(2,2:3)

a(2:4,4)

a(4:5,1:3)

4. 生成一个9×9维的魔方矩阵,提取其中心的3×3维子矩阵M,利用

sum函数检验其各行和各列的和是否相等。并且实现上述中心矩阵左旋

90°或右旋90°,左右翻转,上下翻转

a=magic(9)

>> b=a(4:6,4:6)

b =

20 31 42

30 41 52

40 51 62

>> sum(b,1)

ans =

90 123 156

>> sum(b,2)

ans =

93

123

153

rot90(b)

rot90(b,-1)

fliplr(b)

flipud(b)

5.已知a=[1 2 3;4 5 6;7 8 0],求其特征多项式并求其根、特征值和特

征多项式

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

a =

1 2 3

4 5 6

7 8 0

>> poly(a)

ans =

1.0000 -6.0000 -72.0000 -27.0000

>> poly2sym(ans)

ans =

x^3-6*x^2-72*x-7599824371187741/2856

>> [d v]=eig(a)

d =

-0.2998 -0.7471 -0.2763

-0.7075 0.6582 -0.3884

-0.6400 -0.0931 0.8791

v =

12.1229 0 0

0 -0.3884 0

0 0 -5.7345

6. 计算二重不定积分

>> syms x y

>> f=int(int(x*exp(-x*y),x),y)

>> x=sym('x')

x =

x

>> y=sym('y')

y =

y

>> f=int(int(x*exp(-x*y),x),y)

f =

1/y*exp(-x*y)

8.求解微分方程。

y=dsolve('D2y+2*Dy+2*y=0','y(0)=1','Dy(0)=0')

9.求其解。

6x

1

9x

2

14x

3

11x

4

5x

5

68

x14x7x15x6x294

12345

2x

1

x

2

7x

3

12x

4

x

5

441

6x

1

11x

2

11x

3

9x

4

13x

5

103

>> a=[6 9 14 -11 5;1 14 -7 -15 -6;-2 1 -7 12 -1;6 11 11 -9 -13]

a =

6 9 14 -11 5

1 14 -7 -15 -6

-2 1 -7 12 -1

6 11 11 -9 -13

>> b=[68 294 -441 103]'

b =

68

294

-441

103

>> ra=rank(a)

ra =

4

>> rb=rank([a,b])

rb =

4

%4<5

>> x1=null(sym(a))

x1 =

27713/253

-11117/506

-8394/253

1

1619/506

>> ab

ans =

0

-26.3759

-5.4126

-38.3960

-8.2392

X=K*x1+ans

实验三:二维图形和三维图形的创建

一、实验目的

1.掌握二维图形的绘制。

2.掌握图形的标注

3.了解三维曲线和曲面图形的绘制。

二、实验内容

1.生成1×10维的随机数向量a,在同一幅图片上分别用红、黄、蓝、绿

色绘出其连线图、脉冲图、阶梯图和条形图,并分别标出标题“连线

图”、“脉冲图”、“阶梯图”、“条形图”。

>> x=rand(1,10)

x =

Columns 1 through 7

0.9501 0.2311 0.6068 0.4860 0.8913 0.7621

0.4565

Columns 8 through 10

0.0185 0.8214 0.4447

>> subplot(141);

>> plot(x)

>> subplot(142);

>> stem(x)

>> subplot(143);

>> stairs(x)

>> subplot(144);

>> bar(x)

2.绘制向量x=[1 3 0.5 2.5 2]的饼形图,并把3对应的部分分离出来。

x=[1 3 0.5 2.5 2];

>> pie(x,[0 1 0 0 0])

3.用hold on命令在同一个窗口绘制曲线y=sin(t),y1=sin(t+0.25)

y2=sin(t+0.5),其中t=[0 10]。

t=0:2*pi/100:10;

y1=sin(t);

plot(t,y1)

hold on

y2=sin(t+0.25);

plot(t,y2)

hold on

y3=sin(t+0.5);

plot(t,y3)

4.绘制曲线 x=tcos(3t)

y=tsin

2

t 其中-π≤t≤π,步长取π/100。

要求:要图形注解、标题、坐标轴标签, 并在曲线上截取一点,将相对

应的坐标值文本标注出来(ginput())。;

t=-pi:pi/100:pi;

x=t.*cos(3*t);

y=t.*sin(t).^2;

plot(x,y);

title('曲线图');

legend('x=tcos(3t),y=tsin^2t');

xlabel('x轴数据');

ylabel('y轴数据');

>> hold on

>> [m,n]=ginput(1)

m =

0.7465

n =

-0.4971

>> plot(m,n,'or')

>> text(m,n,['m=',num2str(m),'n=',num2str(n)])

5.在三个子图像中,分别绘制三维曲线,三维曲面,三维网格的半径为6,

坐标为(6,7,6)的由900个面构成的球面(sphere()),对每个图形

标注标题

[x,y,z]=sphere(30);

Z=z*5+6;

X=x*5+6;

Y=y*5+7;

subplot(1,3,1)

mesh(X,Y,Z);

title('三维网格')

subplot(1,3,2)

plot3(X,Y,Z)

title('三维曲线')

subplot(1,3,3)

surf(X,Y,Z)

title('三维曲面')

6.(1)绘一个圆柱螺旋线(形似弹簧)图。圆柱截面直径为10,高度为

5,每圈上升高度为1。如左图所示。

2)利用(1)的结果,对程序做少许修改,得到如右图所示图形。

(>> t=0:0.01:5;

x1=5*cos(2*pi*t);

y1=5*sin(2*pi*t);

z=t;

subplot(121), plot3(x1,y1,z)

>> grid on

>> x2=t.*cos(2*pi*t);

>> y2=t.*sin(2*pi*t);

>> z=t;

>> subplot(122), plot3(x2,y2,z)

>> grid on

思考题:如果要绘制出如图所示的图形,请先指出这四个图形分别对

应哪副图,以及请正确填写下列空格

subplot( 6 , 4 ,[2 3 4 6 7 8] );plot(1:10);grid on;

subplot( 6 ,4 , [10 11 14 15]);plot(peaks);grid on;

subplot( 6 , 4 , [5 9]);plot(membrane);grid on;

subplot( 6, 4 , [17 18 21 22]);surf(membrane);grid on;

三、设计提示

1.Matlab允许在一个图形中画多条曲线:plot(x1,y1,x2,y2,……)

指令绘制

y

1

f

1

(x

1

),y

2

f

2

(x

2

)

等多条曲线。Matlab自动给这些曲线以

不同颜色。标注可用text函数,legend函数等,数据截取ginput函

数,。

2.若干个图像在一副图像上显示,可以用hold on,子图像用subplot函

数。

3.三维绘图函数为plot3,mesh(),surf()。

实验四:函数编写与程序设计

一、实验目的

1 . 掌握M文件的创建。

2.掌握函数的编写规则。

3.掌握函数的调用。

4 . 掌握基本的输入输出函数以及显示函数的用法。

5.会用Matlab程序设计实现一些工程算法问题。

二、实验内容

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

位随机整数,再输入一个运算符号,做相应的运算,显示相应的结果,

并要求结果显示类似于“a=x+y=34”。

解: a=input('请输入一个数:');

b=input('请再输入一个数:');

fuhao=input('请输入一个运算符号(+ - * /):','s');

switch fuhao

case {'+'}

he=a+b;

disp(['和=',num2str(a),'+',num2str(b),'=',num2str(he)])

case {'-'}

he=a-b;

disp(['差=',num2str(a),'-',num2str(b),'=',num2str(he)])

case {'*'}

he=a*b;

disp(['积=',num2str(a),'*',num2str(b),'=',num2str(he)])

case {'/'}

he=a/b;

disp(['商=',num2str(a),'/',num2str(b),'=',num2str(he)])

otherwise disp('请输入正确的符号')

end

2 . 求下列分段函数的值

2

6,

0且

-3

y

2

5

6,0

<10,

2且

3

2

1,其他

要求:用if语句实现,分别输出x = -5.0,-3.0,1.0,2.0,2.5,

3.0,5.0时的y值。其中x的值以向量的形式从键盘输入。(length

())

解:x=[];

y=[];

x=input('请输入x的值:');

for k=1:length(x)

if x(k)<0 & x(k)~=-3

y(k)=x(k).^2+x(k)-6;

elseif x(k)>=0&x(k)<10&x(k)~=2&x(k)~=3

y(k)=x(k).^2-5*x(k)+6;

else

y(k)=x(k).^2-x(k)-1;

end

end

for i=1:length(y)

disp(['y(',num2str(x(i)),')','=',num2str(y(i))]);

end

[-5.0 -3.0 1.0 2.0 2.5 3.0 5.0]

3.编写一个mcircle(r)函数,调用该函数时,根据给定的半径r,以

4. 输入一个百分制成绩,要求输出成绩等级A、B、C、D、E。其中90分

~100分为A,80分~89.5分为B,70分~79.5为C,60分~69.5分为D,60

分以下为E。

要求:1)分别用if语句和switch语句实现

2)对不合理的成绩应输出出错信息“输入的成绩不合理”(若成绩出现小数,

则只能是“.5”)

(num2cell函数:将数值矩阵转化为单位矩阵

num2cell(1:5)={1 2 3 4 5 })

解:score=input('请输入您的分数:');

if rem(score,0.5)==0

switch score

case num2cell(90:0.5:100)

disp('您的成绩等级为 A')

case num2cell(80:0.5:89)

disp('您的成绩等级为 B')

case num2cell(70:0.5:79)

disp('您的成绩等级为 C')

case num2cell(60:0.5:69)

disp('您的成绩等级为 D')

case num2cell(0:0.5:59.5)

disp('您的成绩等级为 E')

otherwise

disp('你输入的成绩不合理')

end

else

disp('你输入的成绩不合理,若出现小数只能是0.5')

end

5.编写一个函数,实现对一个向量求以及求平均值的功能。(要求实现函

数中,输入若不是一个向量,则报错)

function [s,m]=qiu(v)

[m,n]=size(v);

if(m>1 & n>1)|(m==1 & n==1)

error('error')

end

s=sum(v);

m=s/length(v);

6 . Fibonacci数组的元素满足Fibonacci规则:

a(k+2)=a(k)+a(k+1),(k=1,2,3,…);且a1= a2=1。

请设计一段程序,求出该数组中第一个大于10000的元素

要求显示的结果为:

i=21

a(i)=10946

或者

a(21)=10946

法一:a(1)=1;

a(2)=1;

for k=1:10000 %不能是3:10000

a(k+2)=a(k)+a(k+1);

if a(k)>10000

break;

end

end

disp(['k=',num2str(k)])

disp(['a(k)=',num2str(a(k))])

8 . 编写一个阶乘函数jiecheng.m,利用该函数找出最小的n值,使得

n!>10

100

,并求出n!。

解:function s=jiecheng(n)

s=1;

if n==0

s=1;

elseif n<0

error('n必须大于等于0')

else

for i=1:n

s=s*i;

end

end

for n=1:1000

if(jiecheng(n)>10^100)

break;

end

end

str1=['n=',num2str(n)];

str2=['n!=',num2str(s)];

disp(str1)

disp(str2)

9.程序设计:公元前五世纪我国古代数学家张丘建在《算经》一书中提出

了“百鸡问题”:鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。百钱

买百鸡,问鸡翁、母、雏各几何?x+y+z=100

5x+3y+z/3=100

这是一个欠定方程。

for x=0:19

for y=0:33

for z=0:100

if (x+y+z==100)&(5*x+3*y+z/3==100)

d=[x,y,z]

end

end

end

end

三、设计提示

1.函数名和函数文件名应相同;对调用参数的取值范围要检验是否符合要

求,如不符合要求,应给出出错信息(用if和error或disp函数实

现)。

2.程序设计——“百鸡问题”答案不唯一。提示:设x:鸡翁数,则x的

范围:0~19;y:鸡母数,则y的范围:0~33;z:鸡雏数,则z的范

围:0~100。

实验五:Matlab多项式和符号运算

二、实验内容

1.将多项式

P(x)(x2)(x3)(x7)(x1)

化为

x

的降幂排列。

p=poly([2 -3 7 -1])

P=poly([2,-3,7,-1])

poly2str(P,'x')

结果:

ans =

x^4 - 5 x^3 - 19 x^2 + 29 x + 42

2.求一元高次方程的根。

x

9

5x

8

30x

7

150x

6

273x

5

1365x

4

820x

3

4100x

2

576x-28800

P1=[1 -5 -30 150 273 -1365 -820 4100 576 -2880];

x1=roots(P1)

结果:

x1 =

5.0000

-4.0000

4.0000

-3.0000

3.0000

-2.0000

-1.0000

2.0000

1.0000

4.对比用多项式函数的polyder函数及符号函数中的diff函数,求导

x

2

+2x+3。

a=[1 2 3] % x

2

+2x+3

polyder(a) %ans=2 2 2x+2

syms x;

f= x^2+2*x+3;

diff(f) %ans=2*x+2

5.求多项式

A=[1 3 -2 1];

>> polyval(A,[2 4 5])

ans =

17 105 191

6.计算 a(x)=2x

3

+4x

2

+6x+8, b(x)=3x

2

+6x+9的多项式相加(试着编写一

个polyadd的函数,实现多项式相加的功能)

a=[2 4 6 8];

b=[0 3 6 9];

c=a+b

function y=polyadd(x1,x2)

n1=length(x1);

n2=length(x2);

if n1>n2

x2=[zeros(1,n1-n2),x2];

end

if n2>n1

x1=[zeros(1,n2-n1),x1];

end

在点2、4、5的值

y=x1+x2;

end

>> a=[2 4 6 8];

b=[0 3 6 9];

c=polyadd(a,b)

3232

7.求多项式

f

1

(x)x3x5x7

f

2

(x)8x6x4x2

的乘积

f(x)f

1

(x)

f(x)

;并求的商和余式。(conv() deconv())

f

2

(x)

f1=sym('x^3+3*x^2+5*x+7');

f2=sym('8*x^3-6*x^2+4*x-2');

f=f1*f2

collect(f)

(f-f1)/f2

collect(ans)

结果:

f =

(x^3+3*x^2+5*x+7)*(8*x^3-6*x^2+4*x-2)

f =

8*x^6+18*x^5+26*x^4+36*x^3-28*x^2+18*x-14

h =

(-21+8*x^6+18*x^5+26*x^4+35*x^3-31*x^2+13*x)/(8*x^3-6*x^2+4*x-2)

h =

(-21+8*x^6+18*x^5+26*x^4+35*x^3-31*x^2+13*x)/(8*x^3-6*x^2+4*x-2)

8.求

yx

5

tan(4x

2

)3

的符号导数。

y='x^5+tan(4*x^2)+3';

>> diff(y)

ans =

-26 -41 -10 73 -19 13 -70 12 -10 78

-26 -44 -9 2 8

9.用符号运算求实验内容6中的

f(x)

的表达式。观察在不使用

collect(f)函数以及使用后的结果。

三、设计提示

1.关于多项式运算的函数有poly、roots、diff、conv/deconv等。

2.多项式做加减运算时要注意等长度。

3.符号表达式的输入可以用字符串方式,也可以用sym函数, syms函数。

4.了解以下符号多项式函数

1. collect(f): 函数用途是合并多项式中相同的项,

syms x t

f=(1+x)*t+x*t;

collect(f)

2. expand(f):展开多项式,

syms x

f=x*(x*(x-1)+3)+2;

expand(f);

3. horner(f) 对转换多项式为Horner形式, 这种形式的特点是乘法嵌套,

其有着不错的数值计算性质.

syms x;

f=x^3+2*x^2+5*x-2

horner(f)

4. factor(f): 多项式的因式分解. 如果无法在有理数的范围内作分解, 那

么返回的结果还是输入值.

syms x;

f=x^3-6*x^2+11*x-6;

factor(f)

5. simplify(f): 通过数学运算化简符号表达式

syms x;

f=cos(x)^2+sin(x)^2

simplify(f)

6. simple(f): 威力比较强大, 它会尝试各种办法来化简符号表达式, 其化

简的标准是使得符号表达式的长度最短.

syms x

f=sin(x)^2+cos(x)^2;

simple(f)

7. subexpr(f): 通过计算机自动寻找, 将表达式中多次出现的因式用简短

的符号表示, 返回的结果中包含替换之后的表达式, 以及被替换的因式.

syms x a;

f=solve(x^2+a*x-1);

r=subexpr(f);

8. pretty(f): 用"我们人能看到懂"的表示方法表示出符号表达式.

syms a x;

f=solve(x^2+a*x-1);

pretty(f);

实验六:线性时不变系统的时域响应

一、实验目的

1.掌握线性时不变系统的三种描述形式—传递函数描述法、零极点增益描

述法、状态空间描述法。

2.掌握三种描述形式之间的转换。

3.掌握连续和离散系统频率响应的求解。

二、实验内容

1.生成20个点的单位脉冲信号、单位阶跃信号,并记录下函数命令和

波形。

N=20;

x=zeros(1,N)

x(1)=1

stem(x)

x=ones(1,N)

stem(x)

2.生成f=50Hz占空比为40%,幅值为5的矩形波,生成f=50Hz的锯齿波。

F=10000

t=0:1/F:0.1;

f=50

x1=square(2*pi*f*t,40)

plot(t,x1)

x2=sawtooth(2*pi*f*t,0)

plot(t,x2)

3.将连续系统

H(s)0.5

表达式。

k=0.5;

z=[1,-3]';

p=[-1,-2,-4]';

zpk=zpk(z,p,k)

[b,a]=zp2tf(z,p,k);

tf=tf(b,a)

结果:

Zero/pole/gain:

0.5 (s-1) (s+3)

-----------------

(s+1) (s+2) (s+4)

Transfer function:

0.5 s^2 + s - 1.5

----------------------

s^3 + 7 s^2 + 14 s + 8

35z

1

2z

2

4.将离散系统

H(z)

转化为零极点增

11.6z

1

1.3z

2

0.9z

3

0.5z

4

益的描述形式,并显示其表达式。

(s1)(s3)

转化为传递函数的形式,并显示其

(s1)(s2)(s4)

b=[3 5 2];

a=[1 -1.6 1.3 -.9 .5];

systf=tf(b,a,'variable','z^-1')

[z,p,k]=tf2zp(b,a);

syszpk=zpk(z,p,k,'variable','z^-1')

结果:

Transfer function:

3 + 5 z^-1 + 2 z^-2

---------------------------------------------

1 - 1.6 z^-1 + 1.3 z^-2 - 0.9 z^-3 + 0.5 z^-4

Sampling time: unspecified

Zero/pole/gain:

3 z^-2 (1+z^-1) (1+0.6667z^-1)

-------------------------------------------------------------

(1 - 1.685z^-1 + 0.8654z^-2) (1 + 0.08497z^-1 + 0.5778z^-2)

Sampling time: unspecified

5.分别求实验内容3和4的频率响应(对离散系统取256样点,采样

频率取8000Hz)。

k=0.5;

z=[1,-3]';

p=[-1,-2,-4]';

[b,a]=zp2tf(z,p,k);

freqs(b,a)

结果:

b=[3 5 2];

a=[1 -1.6 1.3 -.9 .5];

freqz(b,a,256,8000) % Fs=8000

结果:

6.分别求实验内容3和4的单位冲激响应(对离散系统,作60样点

图)。

k=0.5;

z=[1,-3]';

p=[-1,-2,-4]';

sys3=zpk(z,p,k);

impulse(sys3)

结果:

b=[3 5 2];

a=[1 -1.6 1.3 -.9 .5];

impz(b,a,60)

三、设计提示

1.显示传递函数模型用tf(b,a);显示零极点增益模型用zpk(z,p,k)。注

意:z、p为列向量。

2.连续系统频率响应用freqs函数;离散系统用freqz函数。

3.连续系统冲激响应用impulse函数;离散系统用impz函数。

实验七:数字图像处理初步

一、实验目的

1.掌握图像文件的读取与写入。

2.掌握图像文件的显示、翻转、缩放、叠加

3.掌握黑白和彩色图像在Matlab中矩阵存储格式。

二、实验内容

1.读取到矩阵X中,去掉红色图层,然后显示出来。

X=imread('');

figure(1);

imshow(X);

Y=X;

Y(:,:,1)=0;

figure(2);

imshow(Y);

2.在一个子图中显示'图片,在另一个子图中显示该图片灰度范

围在[100,150]。

[B,map]=imread('','tif');

subplot(121);

imshow(B,[100,150]); %灰度范围[0,255]

subplot(122);

imshow(B);

读取到矩阵A中,观察A的维数,并显示该图像。

([x,y,z]=size(A))

A=imread('');

figure(1);

imshow(A);

[x,y,z]=size(A);

输入以下程序,观察结果,如果想把本题结果变为下图,应该怎么改动程序?

A=imread('');

figure(1);

imshow(A);

[x,y,z]=size(A);

B=A;

B([x+1:2*x],:,1)=fliplr(A(:,:,1));

B([x+1:2*x],:,2)=fliplr(A(:,:,2));

B([x+1:2*x],:,3)=fliplr(A(:,:,3));

figure(2);

imshow(B);

imwrite(B,'');

5.找一个JPG文件,将其进行缩小0.3倍,放大4倍,以及双线性插值放大

4倍,观察结果。

A=imread('','jpg');

m=0.2;

B = imresize(A,m);

imshow(B);

m=5;

C=imresize(B,m); figure(3)

imshow(C); %出现马赛克

figure(4)

D=imresize(B,m,'bilinear');

imshow(D);

三、设计提示

1.首先计算A的维数,然后列数放大1倍,再考虑将矩阵左半边的图像数

据镜像到右半边去。

2.对于彩色图像,矩阵的维数是:行数×列数×图层数(1-红,2-绿,3-

蓝)

Matlab实验及答案

本文发布于:2024-08-28 22:08:06,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/1724854086343915.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:函数   矩阵   命令   显示   图形   符号   使用
留言与评论(共有 0 条评论)
   
验证码:
排行榜

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23