当前位置:文档之家› MATLAB实验内容

MATLAB实验内容

MATLAB实验内容
MATLAB实验内容

实验一:Matlab操作环境熟悉

一、实验目的

1.初步了解Matlab操作环境。

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

二、实验内容

熟悉Matlab操作环境,认识命令窗口、内存工作区窗口、历史命令窗口;学会使用format命令调整命令窗口的数据显示格式;学会使用变量和矩阵的输入,并进行简单的计算;学会使用who和whos命令查看内存变量信息;学会使用图形函数计算器funtool,并进行下列计算:

funtool (回车),出现三个窗口:

Figure No.1、Figure No.2为函数曲线视窗,

Figure No.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的符号导数

int f ------求函数对x的符号积分

simple f ------对函数作尽可能的化简

num f ------取函数的分子表达式

den f ------取函数的分母表达式

1/f ------求函数的倒数1/f

finv ------f -1 求函数的反函数,即g(f(x))=x

2.函数与参数的运算操作。

从y=x^2通过参数的选择去观察下列函数的图形变化

(1) y1=(x+1)^2

(2) y2=(x+2)^2

(3) y3=2*x^2

(4) y4=x^2+2

(5) y5=x^4

(6) y6=x^2/2

在3号窗口的第二排按键是函数与参数的运算操作键

f+a -------求函数与a的和

f-a -------求函数与a的差

f*a -------求函数与a的积

f/a -------求函数除与a的商

f^a -------求函数以a为指数的值

f(x+a) -------作自变量的变换,以x+a代替x

f(x*a) -------作自变量的变换,以a*x代替x

其中a的默认值为1/2,可以在控制栏中去修改参数a的数值。

3.两个函数之间的操作

求和

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

(2) 1+x+x^2+x^3+x^4+x^5

乘积

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

(2) sin(x)*x

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

(2) x/(1+x^2);

(3) 1/(x-1)/(x-2);

求复合函数

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

(2) y=sqrt(u) u=1+exp(x^2)

(3) y=sin(u) u=asin(x)

(4) y=sinh(u) u=-x

在3号窗口的第三排按键是函数与函数的运算操作键

f+g ------计算f(x)+g(x),并将结果显现在1号窗口中

f-g ------计算f(x)-g(x) ,并将结果显现在1号窗口中

f*g ------计算f(x)*g(x) ,并将结果显现在1号窗口中

f/g ------计算f(x)/g(x) ,并将结果显现在1号窗口中

f(g)------求复合函数f(g(x)) ,并将结果显现在1号窗口中

g=f ------将f(x)赋给g ,并将结果显现在2号窗口中

swap ------交换1号和2号视窗的显示

三、设计提示

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

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

四、实验报告要求

1.针对图形函数计算器funtool,对每一类型计算记录其中一个图形的曲线。

2.书写实验报告时要结构合理,层次分明,在分析描述的时候,需要注意语言的流畅。

实验二:M文件和Mat文件操作

一、实验目的

1.定制自己的工作环境。

2.编写简单的M文件。

3.保存内存工作区中的变量到.mat文件。

4.学会只用Matlab帮助。

二、实验内容

1.使用format命令和File|Peferences菜单定制自己的工作环境。

2.编写如下M文件,试调整参数a的大小,观察并记录y1、y2的波形特征。

%example1.m

t=0:pi/100:4*pi;

a=3;

y2=exp(-t/a);

y1=y2.*sin(a*t);

plot(t,y1,'-r',t,y2,':b',t,-y2,':b');

3.保存内存工作区变量a、t、y1、y2到example1.mat文件;关闭Matlab,再重新启动;观察内存工作区;重新根据.mat文件恢复原来的工作区变量。

4.在命令窗口中查看exp函数的帮助;运行helpwin查看超文本格式的帮助文件,试翻译并记录下信号处理工具箱(Signal Processing Toolbox)中的函数分类

(Functions -- Categorical List)。

三、设计提示

1.可以用命令语句、菜单或按钮等多种方式执行命令。

2.用于编辑M文件的文本编辑器还可以执行和调试程序。

3.不同的工具箱可能包含同名的函数,查看帮助时应注意在左侧栏选择相应的工具箱类别。

四、实验报告要求

1.对实验内容2,说明参数a的大小对y1、y2波形特征的影响。

2.翻译命令窗口中的exp函数的帮助信息。

3.运行helpwin,试翻译并记录下信号处理工具箱(Signal Processing Toolbox)中的函数分类(Functions -- Categorical List)。

4.书写实验报告时要结构合理,层次分明,在分析描述的时候,需要注意语言的流畅。

实验三:矩阵运算与元素群运算

一、实验目的

1.掌握数组与矩阵的创建。

2.掌握矩阵运算与数组运算。

3.掌握基本元素群运算。

4.掌握向量与矩阵的特殊处理。

二、实验内容

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

a=1:10 b=5:-2:-5

2.用线性等分命令linspace重新生成上述的a和b向量。

a=linspace(1,10,10) b=linspace(5,-5,6)

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

c=logspace(2,4,10)

4.生成范围在[0,10]、均值为5的3×5维的均匀分布随机数矩阵D。D=10*rand(3,5) 5.利用magic函数生成5×5维的魔方矩阵,取其对角向量e,并根据向量e生成一个对角矩阵E。(所谓魔方矩阵就是各行、各列、各对角线元素之和相等。)

a=magic(5) e=diag(a) E=diag(e)

6.另AA是3×3维魔方矩阵,BB是由A旋转180°得到。CC是一个复数矩阵,其实部为AA,虚部为BB。DD是CC的转置,EE是CC的共轭。分别计算CC

和EE的模和幅角。AA=magic(3) BB=rot90(AA,2) CC=AA+j*BB DD=conj(CC') EE=conj(CC) abs(CC) angle(CC) abs(EE) angle(EE) 7.f是一个首项为20,公比为0.5的10维等比数列;g是一个首项为1,公差为3的10维等差数列。试计算向量f和g的内积s。f=20*0.5.^(0:9) g=(1:3:28) s=dot(f,g)

8.生成一个9×9维的魔方矩阵,提取其中心的3×3维子矩阵M,利用sum函数检验其各行和各列的和是否相等。

A=magic(9) M=A(4:6,4:6) sum(A) sum(conj(A')) conj(A')为A的转置

9.已知

1234

2345

3456

4567

T

??

??

??

=

??

??

??

,利用函数生成左上三角矩阵

1234

2340

1

3400

4000

T

??

??

??

=

??

??

??

T=[1:4;2:5;3:6;4:7] T0=fliplr(T) T01=triu(T0) T1=fliplr(T01)

fliplr(A) 矩阵A左右翻转

flipud(A) 矩阵A上下翻转

v=diag(A) 提取A的对角线上的元素构造一个列向量v

M=diag(v) 用向量v的元素作对角元素,构造一个对角矩阵M

L=tril(A) 取矩阵A的左下三角部分(基于主对角线),其它元素为零U=triu(A) 取矩阵A的右上三角部分(基于主对角线),其它元素为零

rot90(A) 矩阵A 逆时针旋转90°

三、设计提示

1.等比数列可利用首项和公比的元素群的幂乘积生成。 2.提取子矩阵,可灵活应用“:”号或空阵[ ]。

3.尽量用Matlab 函数生成上述矩阵或向量,不要用手工逐个输入。

四、实验报告要求

1.编写实现第二节实验内容中所使用的函数命令,并记录相应的生成结果。 2.思考题:是否存在2×2维的魔方矩阵?。

3.书写实验报告时要结构合理,层次分明,在分析描述的时候,需要注意语言的流畅。

实验四:线性方程组的求解

一、实验目的

1.掌握恰定方程组的解法。

2.了解欠定方程组、超定方程组的解法。 3.掌握左除法求解线性方程组。 4.学会测试程序的运行时间。

二、实验内容

1.用两种方法求下列方程组的解,并比较两种方法执行的时间。

12345123451234512345

12345

7 149251003 151******** 92573005 7141624002 512114500

x x x x x x x x x x

x x x x x x x x x x

x x x x x +--+=??----=??

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

方法一:逆阵法

A=[7,14,-9,-2,5;3,-15,-13,-6,-4;-11,-9,-2,5,7;5,7,14,16,-2;-2,5,12,-11,-4]; b=[100,200,300,400,500]’; x=inv(A)*b

方法二:左除法

A=[7,14,-9,-2,5;3,-15,-13,-6,-4;-11,-9,-2,5,7;5,7,14,16,-2;-2,5,12,-11,-4]; b=[100,200,300,400,500]’; x=A\b

2.判定下列方程是恰定方程组、欠定方程组还是超定方程组,并求其解。

12345123451234512345691411568147156294271244161111913103x x x x x x x x x x x x x x x x x x x x ++-+=??+---=??

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

如果系数矩阵A 的行数m 等于列数n ,且A 为非奇异阵(即A 的行列式:det(A)≠0),

称方程为恰定方程;

如果m>n ,称方程为超定方程; 如果m

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]’; x=A\b

3.用网孔电流法求如下电路的各支路电流。

A=[4,-1,0;-2,6,-4;0,-1,2]; b=[2,1,1]'; x=inv(A)*b; Ia=x(1,1)

Ib=x(2,1)-x(1,1) Ic=x(3,1)-x(2,1) Id=x(3,1)

4.用结点电压法求如下电路的结点电压u n1、u n2。

三、设计提示

1.在计算程序的执行时间之前,应注意用clear 命令将内存变量清空。 2.求得线性方程组的解之后,代入原方程验证是否正确。

四、实验报告要求

1.编写实现第二节实验内容中所使用的函数命令,并记录相应的生成结果。 2.对于电路的求解,应列出相应的网孔方程和结点方程,并注意方向。

3.书写实验报告时要结构合理,层次分明,在分析描述的时候,需要注意语言的流畅。

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

一、实验目的

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

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

二、实验内容

1.编写一个[y,y1,y2]=mwave(f1,m1,f2,m2)函数,实现以下功能,并绘出y1、y2、y 在t ∈[0,2π]区间500个样点的图形。(其中调用参数2 ≤ f1、f2 ≤ 20 H Z ;0.5 ≤ m1、m2 ≤ 2)

11122212

sin(2);sin(2);y m f t y m f t y y y ππ===+

2.程序设计:相传古代印度国王要褒奖他的聪明能干的宰相达依尔(国际象棋发明者),问他要什么?达依尔回答:“陛下只要在国际象棋棋盘的第一个格子上

放一粒麦子,第二个格子上放二粒麦子,以后每个格子的麦子数都按前一格的

两倍计算。如果陛下按此法给我64格的麦子,就感激不尽,其他什么也不要了。”

国王想:“这还不容易!”让人扛了一袋麦子,但很快用光了,再扛出一袋还不

够,请你为国王算一下共要给达依尔多少小麦?(1袋小麦约1.4×108粒)。

3.程序设计:公元前五世纪我国古代数学家张丘建在《算经》一书中提出了“百鸡问题”:鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。百钱买百鸡,问鸡翁、母、雏各几何?

三、设计提示

1.函数名和函数文件名应相同;对调用参数的取值范围要检验是否符合要求,如不符合要求,应给出出错信息(用if和error函数实现)。

2.程序设计——“百鸡问题”答案不唯一。提示:设x:鸡翁数,则x的范围:0~19;y:鸡母数,则y的范围:0~33;z:鸡雏数,则z的范围:0~100。四、实验报告要求

1.编写实现第二节实验内容(1)所使用的函数文件。

2.程序设计用M文件编写,并记录执行结果。“百鸡问题”答案不唯一,要给出所有答案。

3.书写实验报告时要结构合理,层次分明,在分析描述的时候,需要注意语言的流畅。

五、参考答案

第1题:

function [y,y1,y2]=mwave(f1,m1,f2,m2)

% 根据给定的频率和幅值计算标准正弦函数y1、y2及其叠加y的波形。

if (f1<2)|(f1>20) error('f1超出范围!'), return, end

if (f2<2)|(f2>20) error('f2超出范围!'), return, end

if (m1<0.5)|(m1>2) error('m1超出范围!'), return, end

if (m2<0.5)|(m2>2) error('m2超出范围!'), return, end

% ---------------------------------------------------

t=0:2*pi/(500-1):2*pi;

y1=m1*sin(2*pi*f1*t);

y2=m2*sin(2*pi*f2*t);

y=y1+y2;

figure

subplot(311); plot(t,y1); title('y1波形');

subplot(312); plot(t,y2); title('y2波形');

subplot(313); plot(t,y); title('y=y1+y2波形');

% ===================================================

保存为mwave.m

调用函数>>mwave(3,1,10,1)

第2题:

a=1;

s=0;

for i=1:64

s=s+a;

a=2*a;

end

n=s/1.4/10^8

运行后得:n=1.3176e+011

第3题:

解设 x:鸡翁数,则x的范围:0~19

y:鸡母数,则y的范围:0~33

z:鸡雏数,则z的范围:0~100

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

运行后得结果:

d = 0 25 75

d = 4 18 78

d = 8 11 81

d = 12 4 84

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

一、实验目的

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

2.掌握图形的标注

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

二、实验内容

1.生成1×10维的随机数向量a,分别用红、黄、蓝、绿色绘出其连线图、脉冲图、阶梯图和条形图,并分别标出标题“连线图”、“脉冲图”、“阶梯图”、“条形图”。

a=rand(1,10);

subplot(141);plot(a,'r');title('连线图') subplot(142);stem(a,'y');title('脉冲图') subplot(143);stairs(a,'b');title('阶梯图') subplot(144);bar(a,'g');title('条形图')

2.在同一个图形窗口中,绘制两条曲线()1221/2x

x y y ==、;并分别在靠近相应的曲线处标注其函数表达式。

x=-5:0.5:5; y1=2.^x;

y2=(1/2).^x;

plot(x,y1,'r',x,y2,'b'); xlabel('x'),ylabel('y')

text(-3.5, 15, '\leftarrowy2=(1/2)^x')%或者text(-3.5, 15, 'y2=(1/2).^x')

text(2, 15, 'y1=2^x\rightarrow')%或者text(2, 15, 'y1=2^x')

3.编写一个mcircle(r)函数,调用该函数时,根据给定的半径r ,以原点为圆心画一个如图所示的红色空心圆。(图例半径r=5)

4.(1)绘一个圆柱螺旋线(形似弹簧)图。圆柱截面直径为10,高度为5,每圈上升高度为1。如左图所示。

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

三、设计提示

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

111222(),()y f x y f x ==等多条曲线。Matlab 自动给这些曲线以不同颜色。标注可用text 函数。

2.绘图时可以考虑极坐标和直角坐标的转换。 3.三维曲线绘图函数为plot3。

四、实验报告要求

1.编写实现第二节实验内容中所使用的函数命令,并对二-2记录相应的生成结果。 2.书写实验报告时要结构合理,层次分明,在分析描述的时候,需要注意语言的流畅。

五、参考答案

第3题:

function [y,t]=mcircle(r)

% 根据给定的半径r ,以原点为圆心画一个红色空心圆。 t=0:2*pi/64:2*pi; y=r*ones(size(t));

subplot(121), polar(t,y,'*r') [X,Y]=pol2cart(t,y); % 或者采用如下方法转换 % X=r*cos(t); % Y=r*sin(t);

subplot(122), plot(X,Y,'*r') axis equal; axis square;

第4题:

t=0:pi/180:2*pi*5; r1=10/2;

x1=r1*cos(t); y1=r1*sin(t); z=t/(2*pi);

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

grid on

%--------------------------- r2=linspace(5,0,length(t)); x2=r2.*cos(t); y2=r2.*sin(t);

subplot(122), plot3(x2,y2,z) grid on

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

一、实验目的

1.掌握Matlab 多项式的运算。 2.了解符号运算。

二、实验内容(边做实验,边将生成结果和图形拷贝到Word 文档中)

1.将多项式()(2)(3)(7)(1)P x x x x x =-+-+化为x 的降幂排列。 2.求一元高次方程的根。

9876543253015027313658204100576-28800x x x x x x x x x --++--++=

3.求一元高次方程的根,并画出左边多项式函数在[2,2]x ∈-区间内的曲线。

42210x x -+=

4.求多项式321()357f x x x x =+++和322()8642f x x x x =-+-的乘积()f x ;并求

12()()

()

f x f x f x -的商和余式。

5.求52tan(4)3y x x =++的符号导数。

6.用符号运算求实验内容4中的()f x 的表达式。

三、设计提示

1.关于多项式运算的函数有poly 、roots 等。 2.多项式做加减运算时要注意等长度。

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

四、实验报告要求

1.编写实现第二节实验内容中所使用的函数文件,并记录相应的生成结果和图形。

2.对于多项式的结果应以多项式向量和多项式表达式两种方式记录。

3.书写实验报告时要结构合理,层次分明,在分析描述的时候,需要注意语言的流畅。

五、参考答案

第1题:

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

结果:

P =

1 -5 -19 29 42

即:432

=--++

P x x x x x

()5192942

第2题:

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

第3题:

P2=[1 0 -2 0 1];

x2=roots(P2)

n=1;

for x=-2:0.01:2

y(n)=sum(P2.*(x.^[(length(P2)-1):-1:0]));

% 或者 y(n)=x^4-2*x^2+1;

n=n+1;

end

x=-2:0.01:2;

plot(x,y)

%或者

x=-2:0.01:2;

y=x.^4-2*x.^2+1;

plot(x,y)

结果:(有重根!)

x2 =

1.0000 + 0.0000i

1.0000 - 0.0000i

-1.0000 + 0.0000i

-1.0000 - 0.0000i

第4题:

f1=[1 3 5 7];f2=[8 -6 4 -2];

f=conv(f1,f2) % 卷积(*)

f11=[zeros(1,length(f)-length(f1)),f1] % 补0,与f同维

[q,r]=deconv(f-f11,f2) %解卷积(/)

结果:

f =

8 18 26 36 -28 18 -14

即:65432

=+++-+-

f x x x x x x x

()8182636281814

f11 =

0 0 0 1 3 5 7

q =

1.0000 3.0000 5.0000 6.8750

r =

0 0 0 0 -3.7500 -4.5000 -7.2500

第5题:

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

diff(y) %求导

结果:

ans =

5*x^4+8*(1+tan(4*x^2)^2)*x

第6题:

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)

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

一、实验目的

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

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

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

二、实验内容(边做实验,边将生成结果和图形拷贝到Word 文档中)

1.生成20个点的单位脉冲信号、单位阶跃信号,并记录下函数命令和波形。 function[x,n]=impseq(n0,ns,nf) n=[ns:nf];x=[(n-n0)==0]; stem(x)

调用函数:>> impseq(1,0,20) %或者

N=20,n0=1;

x=zeros(1,N); x(1,n0)=1; stem(x)

function[x,n]=stepseq(n0,ns,nf) n=[ns:nf];x=[(n-n0)>=0]; Stairs(x)

调用函数:>> stepseq (1,0,20)

2.生成占空比为30%的矩形波。 Fs=10000;%采样频率

t=0:1/Fs:1;%采样间隔1/Fs x=square(2*pi*50*t,30);

plot(t,x),axis([0,0.2,-1.5,1.5]);

3.将连续系统(1)(3)()0.5(1)(2)(4)

s s H s s s s -+=+++转化为传递函数的形式,并显示其表

达式。 4.将离散系统12

1234

352()1 1.6 1.30.90.5z z H z z z z z ------++=-+-+转化为零极点增益的描述

形式,并显示其表达式。

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

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

三、设计提示

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

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

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

四、实验报告要求

1.编写实现第二节实验内容中所使用的函数文件,并记录相应的生成结果。

2.书写实验报告时要结构合理,层次分明,在分析描述的时候,需要注意语言的流畅。

五、参考答案

第3题:

k=0.5;

z=[1,-3]';

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

sys_zpk=zpk(z,p,k)

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

sys_tf=tf(b,a)

%或者

k=0.5;

z=[1,-3]';

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

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

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

第4题:

b=[3 5 2];

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

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

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

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

或者

b=[3 5 2];

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

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

sys=zpk(z,p,k,0.1,'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题:

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

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.掌握Butterworth 滤波器、Chebyshev Ⅰ型、Ⅱ型滤波器的设计,并能用于对语音信号子频带的提取。 2.了解FIR 滤波器的设计。

二、实验内容(边做实验,边将生成结果和图形拷贝到Word 文档中)

1.将Test1.wav 和Test2.wav 两个语音文件复制到C:\Matlab6p5\work\目录下。 2.设计一个4阶的Chebyshev Ⅱ型模拟高通滤波器,要求截止频率1kHz c f =,阻带纹波不超过-30dB 。取采样频率10kHz s F =。要求结果给出该滤波器的传递函数表达式,并画出该滤波器的频率响应曲线图。

3.设计一个6阶的Butterworth 数字带通滤波器,要求截止频率11000Hz c f =,

23000Hz c f =,取采样频率10kHz s F =。要求结果给出该滤波器的传递函数表达式,并画出该滤波器的频率响应曲线图。 4.设计一个6阶的Butterworth 数字低通滤波器,从一段含噪声语音信号Test2.wav (0~4kHz ,Fs=8kHz )中提取出500Hz 以下的子带信号。在一个图形窗口中分上下两个子窗口分别显示原始语音信号波形和滤波后的500Hz 以下子带信号波形。

5.设计一个65阶的FIR 数字滤波器,通带(归一化):0~0.45、0.65~0.85。画出该滤波器的频率响应曲线图。

三、设计提示

1.设计滤波器时,注意频率的归一化。

2.Chebyshev Ⅱ型模拟高通滤波器设计,用函数cheby2(n,Rs,Wn,'high','s')。其中Rs=30(即表示:阻带纹波不超过-30dB )。

3.设计IIR 带通或带阻滤波器时,若给滤波器函数的参数为n ,则设计出来的是2n 阶的滤波器。

4.设计高通滤波器,用'high'关键字;带通用'bandpass'关键字。

5.查看模拟滤波器的频率响应曲线用freqs 函数,查看数字滤波器的频率响应曲线用freqz 函数。

6.对于FIR 滤波器的设计,第一通带如果从0开始,则应加关键字'DC-1'。

四、实验报告要求

1.编写实现第二节实验内容所使用的M 文件,并在Word 文档中记录相应的生成结果和图形。

2.书写实验报告时要结构合理,层次分明,在分析描述的时候,需要注意语言的流畅。

五、参考答案

Matlab上机实验答案

Matlab上机实验答案 实验一 MATLAB运算基础 1. 先求下列表达式的值,然后显示MATLAB工作空间的使用情况并保存全部变量。 >> z1=2*sin(85*pi/180)/(1+exp(2)) z1 = >> x=[2 1+2i; 5]; >> z2=1/2*log(x+sqrt(1+x^2)) z2 = - + + -

>> a=::; >> z3=(exp.*a)-exp.*a))./2.*sin(a++log(+a)./2) (>> z33=(exp*a)-exp*a))/2.*sin(a++log(+a)/2)可以验证z3==z33,是否都为1) z3 = Columns 1 through 5 + + + + + Columns 6 through 10 + + + + + Columns 11 through 15 + + + + + Columns 16 through 20 + + + + +

Columns 21 through 25 + + + + + Columns 26 through 30 + + + + + Columns 31 through 35 + + + + + Columns 36 through 40 + + + + + Columns 41 through 45 + + + + + Columns 46 through 50

+ + + + + Columns 51 through 55 + + + + + Columns 56 through 60 + + + + + Column 61 + (4) 2 2 4 2 01 112 2123 t t z t t t t t ?≤< ? =-≤< ? ?-+≤< ? ,其中t=0:: >> t=0::; >> z4=(t>=0&t<1).*(t.^2)+(t>=1&t<2).*(t.^2-1)+(t>=2&t<3).*(t.^ 2-2.*t+1) z4 =

Matlab实验指导书

实验一 Matlab使用方法和程序设计 一、实验目的 1、掌握Matlab软件使用的基本方法; 2、熟悉Matlab的数据表示、基本运算和程序控制语句; 3、熟悉Matlab绘图命令及基本绘图控制; 4、熟悉Matlab程序设计的基本方法。 二、实验内容 1、帮助命令 2、矩阵运算 (1)矩阵的乘法和乘方 已知A=[1 2;3 4]:B=[5 5;7 8]:求A^2*B ( 2 )矩阵除法 已知A=[1 2 3:4 5 6:7 8 9]:B=[1 0 0:0 2 0:0 0 3],求矩阵左除A\B,右除A/B。 ( 3 )矩阵的转置及共轭转置 已知A=[5+i,2-i,1;6*i,4,9-i],求该复数矩阵的转置A',共轭转置A.' ( 4 )使用冒号选出指定元素 已知:A=[1 2 3:4 5 6:7 8 9];求A中第3列前2个元素;A中第2、3行元素。 ( 5 )方括号[] 用magic函数生成一个4阶魔术矩阵,删除该矩阵的第四列 3、多项式 (1)求多项式P(x)=x3-2x-4的根 ( 2 )已知A=[1.2 3 5 0.9;5 1.7 5 6;3 9 0 1;1 2 3 4].,构造多项式,并计算多项式值为20的解。 4、基本绘图命令 ( 1 ) 绘制余弦曲线 ] 2,0[ ), cos(π ∈ =t t y 。 ( 2 ) 在同一坐标系中绘制曲线 ] 2,0[ ), 5.0 sin( ), 25 .0 cos( yπ ∈ - = - =t t y t 5、基本绘图控制 绘制 ] 4,0[π 区间上的y=10sint曲线,并要求: (1)线形为点划线,颜色为红色,数据点标记为加号; (2)坐标轴控制:显示范围,刻度线,比例,网络线; (3)标注控制:坐标轴名称,标题,相应文本。 6、基本程序设计 (1)编写命令文件:计算1+2+....+n<2000时的最大n值; (2)编写函数文件:分别用n和which循环结构编写程序,求2的0到n次幂的和. n=input('输入正数n:') ji=1: for i=1:n; ji=ji+2^i: end ji input('输入正数n:') ji-1:i-1: While i<=n ji=ji+2^i; i=i+1; end ji (3)如果想对一个变量x赋值,当从键盘输入y或Y时,x自动赋为1;当从键盘输入n或N时,x自 动赋为0;输入其他字符时终止程序。 k=input('shuruX:'.'s'): if k=='y' k=='Y' x=1 ; else k=='n' k=='N' x=0; else ruturn end >> n=input('输入正数n:') 输入正数n:20 n =20

MATLAB全部实验及答案

MATLAB全部实验及答案 实验一、MATLAB基本操作 实验内容及步骤 4、有关向量、矩阵或数组的一些运算 (1)设A=15;B=20;求C=A+B与c=a+b? (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是对应位置的元素相乘(3)设a=10,b=20;求i=a/b=0.5与j=a\b=2? (4)设a=[1 -2 3;4 5 -4;5 -6 7] 请设计出程序,分别找出小于0的矩阵元素及其位置(单下标、全 下标的形式),并将其单下标转换成全下标。 clear,clc a=[1 -2 3;4 5 -4;5 -6 7]; [x,y]=find(a<0); c=[]; for i=1:length(x) c(i,1)=a(x(i),y(i)); c(i,2)=x(i); c(i,3)=y(i); c(i,4)=(y(i)-1)*size(a,2)+x(i); end c

(5)在MATLAB命令行窗口运行A=[1,2;3,4]+i*[5,6;7,8];看结果如何?如果改成运行A=[1,2;3,4]+i[5,6;7,8],结果又如何?前面那 个是虚数矩阵,后面那个出错 (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( : ) 转化为列向量 (8)使用三元组方法,创建下列稀疏矩阵 2 0 8 0 0 0 0 1 0 4 0 0 6 0 0 0 方法一: clear,clc

MATLAB实验指导书

实验一MATLAB 工作环境熟悉及简单命令的执行 一、 实验目的:熟悉MATLAB 的工作环境,学会使用MATLAB 进行一些简单的运算。 二、 实验内容:MATLAB 的启动和退出,熟悉MATLAB 的桌面(Desktop ),包括菜单 (Menu )、工具条(T oolbar )、命令窗口(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 : ()23 2y x y x z -= ; (4)将下面的矩阵赋值给变量m1,在workspace 中察看m1在内存中占用的字节数。 m1=???? ? ???? ???11514412679810115133216 执行以下命令 >>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) (7)运行MATLAB 的演示程序,>>demo ,以便对MATLAB 有一个总体了解。 四、思考题 1、以下变量名是否合法?为什么? (1)x2; (2)3col ; (3)_row ; (4)for ;

Matlab实验五分支结构程序设计答案

实验五分支结构程序设计 实验内容 (1)从键盘输入一个数,将它反向输出,例如输入693,输出为396 >> clear >> format long g s=input('s=') n=fix(log10(s)); A=0; for i=1:n a=fix(s/10^n); x=fix(mod(s,10^i)/10.^(i-1)); A=A+x*10^(n+1-i); end A+a s=693 s = 693 ans = 396 (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语句 >> a=input('输入成绩') if a>=90&a<=100 disp('A 成绩合理'); elseif a>=80&a<90 disp('B 成绩合理'); elseif a>=70&a<80 disp('C 成绩合理');

elseif a>=60&a<70 disp('D 成绩合理'); elseif a<60 disp('E 成绩合理'); else disp('成绩错误') end 输入成绩98 a = 98 A 成绩合理 >> a=input('输入成绩') if a>=90&a<=100 disp('A 成绩合理'); elseif a>=80&a<90 disp('B 成绩合理'); elseif a>=70&a<80 disp('C 成绩合理'); elseif a>=60&a<70 disp('D 成绩合理'); elseif a<60 disp('E 成绩合理'); else disp('成绩错误') end 输入成绩148 a = 148 成绩错误 switch语句 >> a=input('输入成绩') switch a; case num2cell(0:59) disp('E 成绩合理'); case num2cell(60:69) disp('D 成绩合理'); case num2cell(70:79) disp('C 成绩合理'); case num2cell(80:89) disp('B 成绩合理'); case num2cell(90:100) disp('A 成绩合理'); otherwise disp('成绩错误'); end

MATLAB)课后实验答案

实验一 MATLAB 运算基础 1. 先求下列表达式的值,然后显示MATLAB 工作空间的使用情况并保存全部变量。 (1) 012 2sin 851z e =+ (2) 21ln(2 z x =,其中2 120.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 --+= ++=--L (4) 22 42011 122123t t z t t t t t ?≤

4. 完成下列操作: (1) 求[100,999]之间能被21整除的数的个数。 (2) 建立一个字符串向量,删除其中的大写字母。解:(1) 结果: (2). 建立一个字符串向量例如: ch='ABC123d4e56Fg9';则要求结果是:

实验二 MATLAB 矩阵分析与处理 1. 设有分块矩阵33322322E R A O S ?????? =? ??? ,其中E 、R 、O 、S 分别为单位矩阵、随机矩阵、零矩阵和对角阵,试通过数值计算验证22 E R RS A O S +?? =???? 。 解: M 文件如下; 5. 下面是一个线性方程组: 1 231 1 12340.951110.673450.5211145 6x x x ?? ??????????????=??? ?????????????????? ? ch = 123d4e56g9

(1) 求方程的解。 (2) 将方程右边向量元素b 3改为0.53再求解,并比较b 3的变化和解的相对变化。 (3) 计算系数矩阵A 的条件数并分析结论。 解: M 文件如下: 实验三 选择结构程序设计 1. 求分段函数的值。 2226035605231x x x x y x x x x x x x ?+-<≠-? =-+≤<≠≠??--? 且且及其他 用if 语句实现,分别输出x=-5.0,-3.0,1.0,2.0,2.5,3.0,5.0时的y 值。 解:M 文件如下:

Matlab实验第一次实验答案

实验一Matlab使用方法和程序设计 一、实验目的 1、掌握Matlab软件使用的基本方法; 2、熟悉Matlab的数据表示、基本运算和程序控制语句 3、熟悉Matlab绘图命令及基本绘图控制 4、熟悉Matlab程序设计的基本方法 二、实验内容: 1、帮助命令 使用help命令,查找sqrt(开方)函数的使用方法; 解:sqrt Square root Syntax B = sqrt(X) Description B = sqrt(X) returns the square root of each element of the array X. For the elements of X that are negative or complex, sqrt(X) produces complex results. Remarks See sqrtm for the matrix square root. Examples sqrt((-2:2)') ans = 0 + 1.4142i 0 + 1.0000i

1.0000 1.4142 2、矩阵运算 (1)矩阵的乘法 已知A=[1 2;3 4]; B=[5 5;7 8]; 求A^2*B 解:A=[1 2;3 4 ]; B=[5 5;7 8 ]; A^2*B (2)矩阵除法 已知A=[1 2 3;4 5 6;7 8 9]; B=[1 0 0;0 2 0;0 0 3]; A\B,A/B 解:A=[1 2 3;4 5 6;7 8 9 ]; B=[1 0 0;0 2 0;0 0 3 ]; A\B,A/B (3)矩阵的转置及共轭转置

MATLAB实验题答案

1、求以下变量的值,并在MATLAB中验证。( 1 ) a = 1 : 2 : 5 a = 1 3 5 ( 2 ) b = [ a' , a' , a' ;a ] b = 1 1 1 3 3 3 5 5 5 1 3 5 ( 3 ) c = a + b ( 2 , : ) c = 4 6 8 2、下列运算是否合法,为什么?如合法, 结果是多少? >> result2=a*b Error using * Inner matrix dimensions must agree. >> 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 Attempt to reference field of non-structure array. >> 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=2.^a result11 = 2 4 8 16 32 64 3、用MATLAB求解下面的的方程组。 (1) ? ? ? ? ? ? ? ? ? ? ? ? - = ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? - - - - 1 7 4 13 2 3 1 5 11 2 2 2 3 15 9 2 1 2 7 4 3 2 1 x x x x >> A=[7 2 1 -2;9 15 3 -2;-2 -2 11 5;1 3 2 13] >> B=[4 7 -1 0] >> B=B' >> x=inv(A)*B (2) ? ? ? ? ? ? ? = - + + = - - = - + + = + + 5 6 5 3 3 3 3 2 8 2 1 w z y x w y x w z y x z y x >> A1=[1 1 1 0;1 2 1 -1;2 -1 0 -3;3 3 5 -6] >> B2=[1;8;3;5] >> x2=inv(A1)*B2 4、已知 ? ? ? ? ? ? ? ? ? ? ? ? - - - - = 13 2 3 1 5 11 2 2 2 3 15 9 2 1 2 7 A

matlab所有实验及答案

实验二 习题 1、 矩阵Y= ???? ? ???? ???3472123100451150425 ,给出元素1的全下标和单下标,并用函数练习全下标和单下标的转换,求出元素100的存储位置。取出子矩阵?? ? ? ??21301,并求该矩阵的维数。 解:命令为: Y=[5,2,4;0,15,1;45,100,23;21,47,3] Y(2,3) Y(10) sub2ind([4 3],2,3) [i,j]=ind2sub([4 3],10) find(Y==100) sub2ind([4 3],3,2) B=Y(2:2:4,3:-2:1) 或 B=Y([2 4],[3 1]) [m n]=size(Y) 2、 建立一个数值范围为0—100内4*5的整数随机矩阵。 求出大于50的元素的位置。 解:命令为: G=int8(100*rand(4,5)) find(G>50) 3、 已知矩阵A=[1 0 -1 ;2 4 1; -2 0 5],B=[0 -1 0;2 1 3;1 1 2] 求2A+B 、A 2-3B 、A*B 、B*A 、A .*B ,A/B 、A\B 解:命令为: A=[1 0 -1 ;2 4 1; -2 0 5] B=[0 -1 0;2 1 3;1 1 2] E=2*A+B F=A^2-3*B G=A*B H=B*A I=A.*B J=A/B K=A\B 4、 利用函数产生3*4阶单位矩阵和全部元素都为8的 4*4阶矩阵,并计算两者的乘积。 解:命令为: A=eye(3,4) B=8*ones(4) C=A*B 5、 创建矩阵a=????? ???????------7023021.5003.120498601 ,取出其前两列构成的矩阵b ,取出前两行构成矩阵c ,转置矩阵b 构成矩阵d ,计算a*b 、c

matlab实验四及其答案

实验四GUI 设计专业 学号姓名成绩电气工程及其自 动化201409140305 杨诚1.创建GUI 绘制方程c bx ax y ++=2图形,需要显示绘图结果的坐标系窗口,还能够输入 a , b , c 的值和x 取值范围(最大值和最小值)。 回调函数的编写: a=str2num(get(handles.edit1,'String'));b=str2num(get(handles.edit2,'String'));c=str2num(get(handles.edit3,'String'));xmin=str2num(get(handles.edit4,'String'));xmax=str2num(get(handles.edit5,'String'));x=xmin:0.1:xmax;y=a*x.^2+b*x+c;plot(x,y); 设计的运行界面截图:

2.设计一个GUI,完成画出y=sin(x)、y=cos(x)和y=x 3.的波形图。回调函数的编写: x=-5:0.1:5 plot(x,sin(x)) x=-5:0.1:5 plot(x,cos(x))

x=-5:0.1:5 y=x.^3 plot(x,y)

设计的运行界面截图: 3.创建一个GUI,含有下拉菜单,下拉菜单中有背景颜色选择。回调函数的编写: yanse=get(handles.popupmenu1,'value'); switch yanse case1 set(gcf,'color','r'); case2 set(gcf,'color','y'); case3 set(gcf,'color','g'); end 设计的运行界面截图:

MATLAB上机实验(答案)

MATLAB工具软件实验(1) (1)生成一个4×4的随机矩阵,求该矩阵的特征值和特征向量。程序: A=rand(4) [L,D]=eig(A) 结果: A = 0.9501 0.8913 0.8214 0.9218 0.2311 0.7621 0.4447 0.7382 0.6068 0.4565 0.6154 0.1763 0.4860 0.0185 0.7919 0.4057 L = -0.7412 -0.2729 - 0.1338i -0.2729 + 0.1338i -0.5413 -0.3955 -0.2609 - 0.4421i -0.2609 + 0.4421i 0.5416 -0.4062 -0.0833 + 0.4672i -0.0833 - 0.4672i 0.4276 -0.3595 0.6472 0.6472 -0.4804 D = 2.3230 0 0 0 0 0.0914 + 0.4586i 0 0 0 0 0.0914 - 0.4586i 0 0 0 0 0.2275 (2)给出一系列的a值,采用函数 22 22 1 25 x y a a += - 画一组椭圆。 程序: a=0.5:0.5:4.5; % a的绝对值不能大于5 t=[0:pi/50:2*pi]'; % 用参数t表示椭圆方程 X=cos(t)*a; Y=sin(t)*sqrt(25-a.^2); plot(X,Y) 结果: (3)X=[9,2,-3,-6,7,-2,1,7,4,-6,8,4,0,-2], (a)写出计算其负元素个数的程序。程序: X=[9,2,-3,-6,7,-2,1,7,4,-6,8,4,0,-2]; L=X<0; A=sum(L) 结果: A =

河南城建学院MATLAB上机实验答案

一熟悉Matlab工作环境 1、熟悉Matlab的5个基本窗口 思考题: (1)变量如何声明,变量名须遵守什么规则、是否区分大小写。 答:变量一般不需事先对变量的数据类型进行声明,系统会依据变量被赋值的类型自动进行类型识别,也就是说变量可以直接赋值而不用提前声明。变量名要遵守以下几条规则:?变量名必须以字母开头,只能由字母、数字或下划线组成。 ?变量名区分大小写。 ?变量名不能超过63个字符。 ?关键字不能作为变量名。 ?最好不要用特殊常量作为变量名。 (2)试说明分号、逗号、冒号的用法。 分号:分隔不想显示计算结果的各语句;矩阵行与行的分隔符。 逗号:分隔欲显示计算结果的各语句;变量分隔符;矩阵一行中各元素间的分隔符。 冒号:用于生成一维数值数组;表示一维数组的全部元素或多维数组某一维的全部元素。 (3)linspace()称为“线性等分”函数,说明它的用法。 LINSPACE Linearly spaced vector. 线性等分函数 LINSPACE(X1, X2) generates a row vector of 100 linearly equally spaced points between X1 and X2. 以X1为首元素,X2为末元素平均生成100个元素的行向量。 LINSPACE(X1, X2, N) generates N points between X1 and X2. For N < 2, LINSPACE returns X2. 以X1为首元素,X2为末元素平均生成n个元素的行向量。如果n<2,返回X2。 Class support for inputs X1,X2: float: double, single 数据类型:单精度、双精度浮点型。 (4)说明函数ones()、zeros()、eye()的用法。 ones()生成全1矩阵。 zeros()生成全0矩阵。 eye()生成单位矩阵。 2、Matlab的数值显示格式

昆明理工大学MATLAB实验指导书(第二次实验)

************************ MATLAB上机指导书 ************************ 昆明理工大学机电学院 彭用新 2015年3月

实验三符号计算 一、操作部分:在命令窗口执行命令完成以下运算,记录运算结果。 1.findsym:帮助我们获取系统定义的自变量 f= sym('sin(a*x+b*y)'); findsym(f) 2.numden(获取分子分母), sym2poly,(获取多项式时系数)poly2sym(根据多项式系 数获得符号表达式) [n,d]=numden(sym('x*x+y')+sym('y^2')) p=sym('2*x^3+3*x^2+4'); sym2poly(p) x=[2,3,0,4]; poly2sym(x) 3. collect :合并同类项;expand:展开多项式;horner: 分解成嵌套形式;factor:因式 分解;simplify: 对表达式化简 syms x y; collect(x^2*y+y*x-x^2-2*x) collect((x+y)*(x^2+y^2+1), y) syms x y; expand((x-2)*(x-4)) syms x;horner(x^3-6*x^2+11*x-6) syms x;factor(x^3-6*x^2+11*x-6) syms x;simplify((x^2+5*x+6)/(x+2)) 4. finverse :求得符号函数的反函数。 syms x y; finverse(1/tan(x)) f= x^2+y; finverse(f,y) finverse(f) https://www.doczj.com/doc/d418318357.html,pose 求符号函数的复合函数 syms x y; f = 1/(1 + x^2); g = sin(y); compose(f,g) 6. subs :表达式替换。 syms a b;subs(a+b,a,4)

MATLAB实验题目及答案

实验二一维二维数组的创建和寻访 一、实验目的 1、掌握一维数组、二维数组创建和寻访的几种方法。 2、区别数组运算和矩阵运算的差别。 3、熟悉执行数组运算的常用数组操作函数。 4、掌握数组运算中的关系和逻辑操作及常用的关系、逻辑函数。 5、掌握“非数”、“空”数组在MA TLAB中的应用。 二、实验主要仪器与设备 装配有MA TLAB7.6软件的计算机 三、预习要求 做实验前必须认真复习第三章MATLAB的数值数组及向量化运算功能。 四、实验内容及实验步骤 1、一维数组的创建方法有哪几种?举例说明。 答:一维数组的创建方法有: ①递增/递减型一维数组的创建:冒号生成法:x=a:inc:b 线性(或对数)定点法:x=linspace(a,b,n),x=logspace(a,b,n) ②逐个元素输入法:如x=[0.1,sin(pi/5),-exp(-3),-2*pi] ③运用MA TLAB函数生成法:例ones,rand等。 2、输入以下指令,并写出运行结果。本例演示:数组元素及子数组的各种标识和寻访格式;冒号的使用;end的作用。 A=zeros(2,6) %创建(2×6)的全零数组 A(:)=1:12 %赋值号左边:单下标寻访(2×6) 数组A的全部12个元素 %赋值号右边:拥有12个元素的一维数组 A(2,4) %双下标:A数组的第2行第4列元素 A(8) %单下标:数组A的第8个元素 A(: , [1,3]) %双下标:显示A的“第1列和第3列上全部行的元素” A([1, 2, 5, 6]') %单下标:把A数组第1,2,5,6个元素排成列向量 A(: , 4:end) %双下标:显示A的“从第4起到最后一列上全部行的元素” %在此end用于“列标识”,它表示“最后一列” A(2,1:2:5)=[-1, -3, -5] %把右边的3个数分别赋向A数组第2行的第1,3,5个元素位置 B=A([1, 2, 2, 2], [1, 3, 5]) %取A数组的1,3,5列的第1行元素作为B的第1行 %取A数组的1,3,5列的第2行分别作为B的第2,3,4行 L=A<3 %产生与A维数相同的“0,1”逻辑数组 A(L)=NaN %把逻辑1标识的位置上的元素赋为“非数” 运行结果: A = 0 0 0 0 0 0 0 0 0 0 0 0

matlab实验内容答案

实验报告说明: matlab 课程实验需撰写8个实验报告,每个实验报告内容写每次实验内容中标号呈黑体大号字显示的题目。 第一次实验内容: 实验一 MATLAB 运算基础 一、实验目的 1.熟悉启动和退出MA TLAB 的方法。 2.熟悉MA TLAB 命令窗口的组成。 3.掌握建立矩阵的方法。 4.掌握MA TLAB 各种表达式的书写规则以及常用函数的使用。 二、实验内容 1.先求下列表达式的值,然后显示MA TLAB 工作空间的使用情况并保存全部变量。 (1)2 2sin 8511z e ?= + (2 )12ln(2 z x =+ ,其中2120.45 5i +? ? =? ?-?? (3)0.30.33sin(0.3), 3.0, 2.9, 2.8,,2.8,2.9,3.02 a a e e z a a --= +=--- 提示:利用冒号表达式生成a 向量,求各点的函数值时用点乘运算。 (4)2 2 2 01 41 1221 23 t t z t t t t t ?≤

12344347873657A -????=??????,131203327B -???? =????-?? 求下列表达式的值: (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 12345678910111213141516171819202122232425A ????????=????????, 30 161769 23497041311B ?? ?? -?? ??=-?? ????? ? (1) 求它们的乘积C 。 (2) 将矩阵C 的右下角3×2子矩阵赋给D (3) 查看MA TLAB 工作空间使用情况。 4.完成下列操作: (1)求[100,999]之间能被21整除的数的个数。 提示:先利用冒号表达式,再利用find 和length 函数。 (2)建立一个字符串向量,删除其中的大写字母。 提示:利用find 函数和空矩阵。 第二次实验内容: 实验三 选择结构程序设计 一、实验目的 1. 掌握建立和执行M 文件的方法。 2. 掌握利用if 语句实现选择结构的方法。 3. 掌握利用switch 语句实现多分支选择结构的方法。 4. 掌握try 语句的使用。 二 、实验内容

MATLAB实验指导书(学生定稿)

实验一 MATLAB语言平台及基本运算 一、实验目的 1、熟悉MATLAB基本的操作界面。 2、掌握MATLAB中变量、数组、向量等对象的生成方法。 3、掌握矩阵的生成和基本运算方法。 4、掌握MATLAB中的常用绘图命令使用方法 二、实验设备 计算机,MATLAB语言环境 三、实验指导原理 1、常见数学函数 如:输入 x=[-4.85 -2.3 -0.2 1.3 4.56 6.75],则 ceil(x)= -4 -2 0 2 5 7 fix(x) = -4 -2 0 1 4 6 floor(x) = -5 -3 -1 1 4 6 round(x) = -5 -2 0 1 5 7 系统的在线帮助 (1) help 命令: 1).当不知系统有何帮助内容时,可直接输入 help以寻求帮助: >> help(回车) 2).当想了解某一主题的内容时,如输入: >> help syntax (了解 Matlab 的语法规定) 3).当想了解某一具体的函数或命令的帮助信息时,如输入: >> help sqrt (了解函数 sqrt 的相关信息)

(2) lookfor 命令 现需要完成某一具体操作,不知有何命令或函数可以完成,如输入: >> lookfor line (查找与直线、线性问题有关的函数) 3、常量与变量 系统的变量命名规则:变量名区分字母大小写;变量名必须以字母打头,其后 可以是任意字母,数字,或下划线的组合。此外,系统内部预先定义了几个有特殊意义和用途的变量,见下表: (1)数值型向量(矩阵)的输入 1).任何矩阵(向量),可以直接按行方式输入每个元素:同一行中的元素用逗号(,)或者用空格符来分隔;行与行之间用分号(;)分隔。所有元素处于一方括号([ ]内;例1: >> Time = [11 12 1 2 3 4 5 6 7 8 9 10] >> X_Data = [2.32 3.43;4.37 5.98] 2).系统中提供了多个命令用于输入特殊的矩阵: 上面函数的具体用法,可以用帮助命令 help 得到。如:help zeros ZEROS Zeros array. ZEROS(N) is an N-by-N matrix of zeros. ZEROS(M,N) or ZEROS([M,N]) is an M-by-N matrix of zeros.等等 4、数组(矩阵)的点运算 运算符:+(加)、-(减)、./(右除)、.\(左除)、.^(乘方), 例4: >> g = [1 2 3 4];h = [4 3 2 1]; >> s1 = g + h, s2 = g.*h, s3 = g.^h, s4 = g.^2, s5 = 2.^h 5、矩阵的运算

Matlab实验指导书(含答案)汇总

实验一:Matlab操作环境熟悉 一、实验目的 1.初步了解Matlab操作环境。 2.学习使用图形函数计算器命令funtool及其环境。 二、实验内容 熟悉Matlab操作环境,认识命令窗口、内存工作区窗口、历史命令窗口;学会使用format命令调整命令窗口的数据显示格式;学会使用变量和矩阵的输入,并进行简单的计算;学会使用who和whos命令查看内存变量信息;学会使用图形函数计算器funtool,并进行下列计算: 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); 2.函数与参数的运算操作。 从y=x^2通过参数的选择去观察下列函数的图形变化 (1) y1=(x+1)^2 (2) y2=(x+2)^2 (3) y3=2*x^2 (4) y4=x^2+2 (5) y5=x^4 (6) y6=x^2/2 3.两个函数之间的操作 求和 (1) sin(x)+cos(x) (2) 1+x+x^2+x^3+x^4+x^5 乘积 (1) exp(-x)*sin(x)

matlab实验指导书

matlab实验指导书 实验一 MATLAB运算基础及矩阵分析与处理 一实验目的 1.熟悉启动和退出MATLAB的方法。 2.熟悉MATLAB 命令窗口的组成。 3.掌握建立矩阵的方法。 4.掌握MATLAB各种表达式的书写规则以及常用函数的使用。 5. 掌握生成特殊矩阵的方法。 6. 掌握矩阵分析的方法。 7. 用矩阵求逆解线性方程组。二实验仪器和设备装有以上计算机一台三实验原理 MATLAB 是以复杂矩阵作为基本编程单元的一种程序设计语言。它提供了各种矩阵的运算与操作,并有较强的绘图功能。基本规则 一般MATLAB命令格式为 [输出参数1,输出参数2,……]= 输出参数用方括号,输入参数用圆括号如果输出参数只有一个可不使用括号。 %后面的任意内容都将被忽略,而不作为命令执行,一般用于为代码加注 释。 可用↑、↓键来重现已输入的数据或命令。用←、→键来移动光标进行修改。所有MATLAB命令都用小写字母。

大写字母和小写字母分别表示不同的 变量。 常用预定义变量,如pi 、Inf、NaN、ans 矩阵的输入要一行一行的进行,每行各元素用空格或“,”分开,每行用 “;”分开。如 123 A456789 MATLAB书写格式为A=[1 2 3 ;4 5 6 ;7 8 9] 在MATLABZ中运行如下程序可得到A 矩阵 a=[1 2 3;4 5 6;7 8 9] a = 1 2 3 4 5 6 7 8 9 需要显示命令的计算结果时,则语句后面不加“;”号,否则要加“;”号。运行下面两种格式可以看出它 们的区别: a=[1 2 3;4 5 6;7 8 9] a=[1 2 3;4 5 6;7 8 9]; a= 1 2 3 不显示结果 4 5 6 7 8 9 当输入语句过长需要换行时,应加上“…”后再回车,则可续行输入。文件管理常用命令帮助命令 MATLAB有很多命令,因此很不容易记忆。使用HELP命 令可以得到有关命令的屏幕帮助信息。 如在MATLAB环境下直接运行HELP命令就会在屏幕上

MATLAB实验指导书(2010)

MATLAB语言及应用实验指导书 机械与电气工程学院

目录 实验一MA TLAB基础入门及数值数组运算(2学时,验证) . 3 实验二MA TLAB语言的程序设计(4学时,综合) (8) 实验三SIMULINK交互式仿真集成环境(2学时,验证) (11)

实验一MATLAB基础入门及数值 数组运算 一、实验目的 1、了解MATLAB操作桌面的基本结构和组成; 2、理解Command Window指令窗的作用,掌握指令窗的操作方式和指令的基本语法; 3、理解Current Directory当前路径、搜索路径的作用,掌握当前路径、搜索路径的设置 方法; 4、理解Workspace Browser工作空间浏览器的作用,掌握内存变量的查阅、删除、保存和 载入的基本方法; 5、掌握一维数组的创建方法;掌握一维数组子数组的寻访和赋值方法; 6、掌握二维数组的创建方法;掌握二维数组子数组的寻访和赋值方法; 7、掌握数组的各种运算,理解数组运算和矩阵运算的区别。 二、实验原理 1、MATLAB操作桌面的基本结构和组成 了解MATLAB的基本组件是正确使用MATLAB的基本前提。MATLAB由以下基本组件组成:(1)指令窗Command Window:可键入各种送给MATLAB运作的指令、函数、表达式;显示除图形外的所有运算结果 (2)历史指令窗Command History:记录已经运作过的指令、函数、表达式; (3)当前目录浏览器:进行当前目录的设置;展示相应目录上的M、MDL等文件;(4)工作空间浏览器Workspace Browser:列出MATLAB工作空间中所有的变量名、大小、字节数; (5)内存数组编辑器Array Editor:在工作空间浏览器中对变量进行操作时启动(6)开始按钮 (7)交互界面分类目录窗Launch Pad:以可展开的树状结构列着MATLAB提供的所有交互界面 (8)M文件编辑/调试器 (9)帮助导航/浏览器 2、MATLAB指令窗的基本操作 MATLAB指令窗给用户提供了最直接的交互界面,可用于输入和执行指令、显示指令运行结果、调试MATLAB程序等常用的MATLAB仿真计算功能。本实验掌握以下在指令窗执行的基本操作,达到熟悉使用指令窗的目的: (1)最简单的计算器使用方法:在MATLAB指令窗中,可按计算器的方式进行一般的数学计算,MATLAB的运算符的含义大致与常见的运算规则一致; (2)在指令窗中输入和生成矩阵:与一般的计算器不同,在MATLAB中可直接输入和生成矩阵。实际上,矩阵是MATLAB工作的基本元素。 (3)数值表述方法:在MATLAB中的大部分数值的表述方式与平常是相同的,需要注意的是在表示比较大的数时,MATLAB默认采用科学计数法显示; (4)变量命名规则:对于MATLAB变量命名规则,需要注意以下几点:

matlab实验指导答案详解(非常详细正确)

实验一 MATLAB 工作环境熟悉及简单命令的执行 一、实验目的:熟悉MATLAB 的工作环境,学会使用MATLAB 进行一些简单的运算。 二、实验内容:MATLAB 的启动和退出,熟悉MATLAB 的桌面(Desktop ),包括菜单 (Menu )、工具条 (Toolbar )、命令窗口(Command Window)、历史命令窗口、工作 空间(Workspace)等;完成一些基本的矩阵操作;学习使用在线帮助系统。 三、实验步骤: 1、启动MATLAB ,熟悉MATLAB 的桌面。 2、在命令窗口执行命令完成以下运算,观察workspace 的变化,记录运算结果。 (1)(365-52?2-70)÷3 >>(365-52*2-70)/3 ans = 63.6667 (2)>>area=pi*2.5^2 area = 19.6350 (3)已知x=3,y=4,在MATLAB 中求z : () 2 3 2y x y x z -= >>x=3 >>y=4 >>z = x ^2 * y ^3 / (x - y) ^2 z = 576 (4)将下面的矩阵赋值给变量m1,在workspace 中察看m1在内存中占用的字节数。 m1=???? ? ???? ???11514412679810115133216 执行以下命令 >>m1 =[16 2 3 13 ; 5 11 10 8 ; 9 7 6 12 ; 4 14 15 1 ] >>m1( 2 , 3 ) ans = 10 >>m1( 11 ) ans = 6 >>m1( : , 3 ) ans =3 10 6 15 >>m1( 2 : 3 , 1 : 3 ) ans =5 11 10 9 7 6 >>m1( 1 ,4 ) + m1( 2 ,3 ) + m1( 3 ,2 ) + m1( 4 ,1) ans = 34 (5)执行命令>>help abs

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