MATLAB实验二(修改)

MATLAB实验二(修改)
MATLAB实验二(修改)

实验二 信号的表示及其基本运算

一、实验目的

1、掌握连续信号及其MATLAB 实现方法;

2、掌握离散信号及其MA TLAB 实现方法

3、掌握离散信号的基本运算方法,以及MA TLAB 实现

4 熟悉应用MATLAB 实现求解系统响应的方法 4、了解离散傅里叶变换的MA TLAB 实现 5、了解IIR 数字滤波器设计 6、了解FIR 数字滤波器设计1

二、实验设备

计算机,Matlab 软件 三、实验内容

(一)、 连续信号及其MATLAB 实现 1、 单位冲激信号

()0,0()1,0

t t t dt ε

ε

δδε-?=≠??=?>???

例1.1:单位冲击信号的MATLAB 实现程序如下:

t1=-4; t2=4; t0=0; dt=0.01; t=t1:dt:t2; n=length(t); x=zeros(1,n);

x(1,(-t0-t1)/dt+1)=1/dt; stairs(t,x);

axis([t1,t2,0,1.2/dt]);

2、 任意函数

()()()f t f t d τδττ+∞

-∞

=-?

例1.2:用MA TLAB 画出如下表达式的脉冲序列

()0.4(2)0.8(1) 1.2() 1.5(1) 1.0(2)0.7(3)f n n n n n n n δδδδδδ=-+-+++++++

3 单位阶跃函数

1,0()0,

t u t t ?≥?=?

例1.3:用MA TLAB 实现单位阶跃函数

clear all;

t=-0.5:0.001:1; t0=0;

u=stepfun(t,t0); plot(t,u)

axis([-0.5 1 -0.2 1.2])

4 斜坡函数

0()()g t B t t =-

例1.4:用MA TLAB 实现g(t)=3(t-1) clear all; t=0:0.01:3; B=3; t0=1;

u=stepfun(t,t0); n=length(t); for i=1:n

u(i)=B*u(i)*(t(i)-t0); end plot(t,u)

axis([-0.2 3.1 -0.2 6.2])

5 抽样信号 抽样信号Sa(t)=sin(t)/t 在MATLAB 中用 sinc 函数表示。 定义为 )/(sin )(πt c t Sa =

t=-3*pi:pi/100:3*pi; ft=sinc(t/pi); plot(t,ft); grid on;

axis([-10,10,-0.5,1.2]); %定义画图范围,横轴,纵轴 title('抽样信号') %定义图的标题名字

6 指数函数

()at f t Ae =

例1.5:用MA TLAB 实现0.5()3t

f t e =

7 正弦函数

2()cos(

)t

f t A T π?=+ 例1.6:用MA TLAB 实现正弦函数f(t)=3cos(10πt+1) 8 虚指数信号

例 虚指数信号 调用格式是f=exp((j*w)*t) t=0:0.01:15;

w=pi/4; X=exp(j*w*t);

Xr=real(X); %取实部 Xi=imag(X); %取虚部 Xa=abs(X); %取模 Xn=angle(X); %取相位

subplot(2,2,1),plot(t,Xr),axis([0,15,-(max(Xa)+0.5),max(Xa)+0.5]), title('实部');

subplot(2,2,3),plot(t,Xi),axis([0,15,-(max(Xa)+0.5),max(Xa)+0.5]), title('虚部');

subplot(2,2,2), plot(t,Xa),axis([0,15,0,max(Xa)+1]),title('模');

subplot(2,2,4),plot(t,Xn),axis([0,15,-(max(Xn)+1),max(Xn)+1]),title('相角'); %subplot(m,n,i) 命令是建立m 行n 列画图窗口,并指定画图位置i 9 复指数信号

例 复指数信号 调用格式是f=exp((a+j*b)*t) t=0:0.01:3;

a=-1;b=10;

f=exp((a+j*b)*t);

subplot(2,2,1),plot(t,real(f)),title('实部') subplot(2,2,3),plot(t,imag(f)),title('虚部') subplot(2,2,2),plot(t,abs(f)),title('模') subplot(2,2,4),plot(t,angle(f)),title('相角')

(二)、离散信号及其MATLAB 实现 1、 单位冲激序列

1,0()0,

n n n δ?=?=?

≠??

例2.1:用MA TLAB 产生64点的单位冲激序列

clear all; N=64;

x=zeros(1,N); x(1)=1; xn=0:N-1; stem(xn,x)

axis([-1 65 0 1.1])

2、 任意序列

()()()m f n f m n m δ∞

=-∞

=

-∑

例2.2:用MA TLAB 画出如下表达式的脉冲序列

()8.0() 3.4(1) 1.8() 5.6(3) 2.9(4)0.7(5)f n n n n n n n δδδδδδ=+-++-+-+-

3、 单位阶跃序列

1,0()0,

n u n n ?≥?=?

例2.3:用MA TLAB 实现单位阶跃函数

4、 斜坡序列

0()()g n B n n =-

例2.4:用MA TLAB 实现g(n)=3(n-4)点数为32的斜坡序列 clear all; N=32; k=4 B=3; t0=1;

x=[zeros(1,k) ones(1,N-k)]; for i=1:N

x(i)=B*x(i)*(i-k); end

xn=0:N-1; stem(xn,x)

axis([-1 32 0 90])

5、 正弦序列

()sin(2)x n A fn π?=+

例2.5:用MA TLAB 实现幅度A=3,频率f=100,初始相位Φ=1.2,点数为32的正弦信号 6、 实指数序列

()n x n Aa =

例2.6:用MA TLAB 实现0.7

()3x n e =,点数为32的实指数序列

clear all; N=32; A=3; a=0.7; xn=0:N-1; x=A*a.^xn; stem(xn,x)

7、 复指数序列

()(),a j n x n Ae n ω+=?

例2.7:用MA TLAB 实现幅度A=3,a=0.7,角频率ω=314,点数为32的实指数序列 clear all;

N=32;

A=3;

a=0.7;

w=314;

xn=0:N-1;

x=A*exp((a+j*w)*xn);

stem(xn,x)

8、随机序列

利用MATLAB产生两种随机信号:

rand(1,N)在区间上产生N点均匀分布的随机序列

randn(1,N)产生均值为0,方差为1的高斯随机序列,即白噪声序列

例2.8:用MA TLAB产生点数为32的均匀分布的随机序列与高斯随机序列

clear all;

N=32;

x_rand=rand(1,N);

x_randn=randn(1,N);

xn=0:N-1;

figure(1);

stem(xn,x_rand)

figure(2);

stem(xn,x_randn)

(三)、离散信号的基本运算

1、信号的延迟

给定离散信号x(n),若信号y(n)定义为:y(n)=x(n-k),那么y(n)是信号x(n)在时间轴上右移k个抽样周期得到的新序列。

例3.1:正弦序列y(n)=sin(100n)右移3个抽样周期后所得的序列,MATLAB程序如下:clear all;

N=32;

w=100;

k=3;

x1=zeros(1,k);

xn=0:N-1;

x2=sin(100*xn);

figure(1)

stem(xn,x2)

x=[x1 x2];

axis([-1 N -1.1 1.1])

N=N+k;

xn=0:N-1;

figure(2)

stem(xn,x)

axis([-1 N -1.1 1.1])

利用for 循环语句实现周期延迟. 2、 信号相加

若信号12()()()x n x n x n =+,值得注意的是当序列1()x n 和2()x n 的长度不相等或者位置不对应时,首先应该使两者的位置对齐,然后通过zeros 函数左右补零使其长度相等后再相加 例3.2:用MA TLAB 实现两序列相加 clear all; n1=0:3

x1=[2 0.5 0.9 1]; figure(1) stem(n1,x1)

axis([-1 8 0 2.1] ) n2=0:7

x2=[ 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7]; figure(2) stem(n2,x2)

axis([-1 8 0 0.8] ) n=0:7;

x1=[x1 zeros(1,8-length(n1))]; x2=[ zeros(1,8-length(n2)),x2]; x=x1+x2; figure(3) stem(n,x)

axis([-1 8 0 2.1])

已知f1(t)=sinwt , f2(t)=sin8wt , w=2pi , 求f1(t)+f2(t)和f1(t)f2(t) 的波形图

3、 信号相乘

信号序列1()x n 和2()x n 相乘所得信号()x n 的表达式为:12()()()x n x n x n =

这是样本与样本之间的点乘运算,在MA TLAB 中可采用“.*”来实现,但是在信号序列相乘之前,应对其做与相加运算一样的操作。 例3.3:用MA TLAB 实现上例中两序列相乘 clear all; n1=0:3

x1=[2 0.5 0.9 1]; figure(1) stem(n1,x1)

axis([-1 8 0 2.1] ) n2=0:7

x2=[ 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7]; figure(2) stem(n2,x2)

axis([-1 8 0 0.8] ) n=0:7;

x1=[x1 zeros(1,8-length(n1))]; x2=[ zeros(1,8-length(n2)),x2]; x=x1.*x2; figure(3) stem(n,x)

axis([-1 8 0 0.35])

4、 信号翻转

信号翻转的表达式为:y(n)=x(-n),在MATLAB 中可以用fliplr 函数实现此操作 例3.4:用MA TLAB 实现“信号相加”中的1()x n 序列翻转 clear all; n=0:3

x1=[2 0.5 0.9 1]; x=fliplr(x1); stem(n,x)

axis([-1 4 0 2.1] )

5、 信号和

对于N 点信号()x n ,其和的定义为:1

()N

n y x n ==

例3.5:用MA TLAB 实现“信号相加”中的1()x n 序列和 clear all; n=0:3

x1=[2 0.5 0.9 1]; x=sum(x1)

6、 信号积

对于N 点信号()x n ,其积的定义为:1

()N

n y x n ==

例3.5:用MA TLAB 实现“信号相加”中的1()x n 序列积 clear all; n=0:3

x1=[2 0.5 0.9 1]; x=prod(x1) 7 卷积

1、 完成)(1t f 与)(2t f 两函数的卷积运算 其中:)4()()(),

()(221--==-t u t u t f t u e

t f t

在一个图形窗口中,画出)(1t f 、

)(2t f 以及卷积结果。要求每个坐标系有标题、坐标轴名称。 p=0.1; t=0:p:10;

f1=exp(-2*t).*u(t); f2=u(t)-u(t-4); f=conv(f1,f2); subplot(1,3,1); plot(t,f1,'r');

title('f1(t)=e^-2*t*u(t)'); xlabel('t(sec)'); ylabel('f1(t)'); subplot(1,3,2); plot(t,f2,'g');

title('f2(t)=u(t)-u(t-4)'); xlabel('t(sec)'); ylabel('f2(t)'); subplot(1,3,3); plot(f);

title('f(t)=f1(t)*f2(t)'); xlabel('t(sec)'); ylabel('f(t)');

四 MATLAB 在信号与系统中的应用

该实验用MATLAB 中库函数,如tf2zp(b,a),ss2zp(A,B,C,D),zplane(z,p),freqz(b,a)等。例如:

1.传递函数为

14.02

5.0)(2

2+++-=s s s s s H ,求其零极点图。 程序如下:

num=[1 0.5 2]; 分子系数,按降幂顺序排列 den=[1 0.4 1]; 分母系数,按降幂顺序排列 [z,p]=tf2zp(num,den); 用tf2zp 函数求出其零点z 和极点p zplane(z,p) 作出零极点图

2.若给出的是滤波器的输入与输出的状态方程,如:

u x x ??????+??????-='013101,[]u x y 0141+???

???-=,求其零极点图。 程序如下: A=[1,0;1,-3];

B=[1;0];

C=[-41

,1];

D=0;

[z,p]=ss2zp(A,B,C,D);求出其零极点z,p zplane(z,p)

在连续时间系统中,当极点在虚轴的右半平面时,系统不稳定,在虚轴上, 单阶极点系统稳定;若零点均处于左半平面内,则系统为最小相位系统。在离散系统中,极点在单位圆外系统不稳定,在单位圆上,单阶极点系统稳定;零点在单位圆内,系统为最小相位系统。

对一滤波器,我们不仅要知道它的零点和极点,还要了解它的频率特性,本实验可求其频率特性。

对模拟滤波器,可用freqs 函数求得其频率特性,对数字滤波器,则用freqz 函数求得。

3 已知模拟滤波器的传递函数为

14.01

3.02.0)(2

2++++=s s s s s H ,求其频率特性。 程序如下:

num=[0.2 0.3 1]; den=[1 0.4 1];

w=logspace(-1,1); 频率范围 freqs(num,den,w)

例4.数字滤波器212

14.013.02.0)(----++++=

z z z z z H ,取样点数为128点,求其频率特性。

程序如下:

num=[0.2 0.3 1]; den=[1 0.4 1]; freqz(num,den,128) 实验内容:

1.已知下列传递函数H(s)或H(z),求其零极点,并画出零极点图。

a. )2)(1()2)(1(3)(++--=s s s s s H

b.

s s H 1)(=

c.

521

)(2

2+++=s s s s H d.

1235

2236.0)(23

23++++++?=z z z z z z z H

2.已知下列H(s)或H(z),求其频响。 a. 111)(-+=

z z H

b.

122)(2++=

s s s s H

c.

22

161.01)1()(--++=

z z z H d. )2)(1()2)(1(3)(++--=

s s s s s H

1: 若某连续系统的输入为e (t ),输出为r (t ),系统的微分方程为:

''()5'()6()3'()2()y t y t y t f t f t ++=+

①求该系统的单位冲激响应h (t )及其单位阶跃响应g (t )。 ②若2()()t f t e t ε-= 求出系统的零状态响应y(t )

分析: ① 求冲激响应及阶跃响应的MATLAB 程序:

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

subplot(2,1,1), impulse(b,a,4) subplot(2,1,2), step(b,a,4)

运行结果如右:

② 求零状态响应的MATLAB 程序:

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

p1=0.01; %定义取样时间间隔为0.01 t1=0:p1:5; %定义时间范围 x1=exp(-2*t1); %定义输入信号

lsim(b,a,x1,t1), %对取样间隔为0.01时系统响应进行仿真

hold on; %保持图形窗口以便能在同一窗口中绘制多条曲线 p2=0.5; %定义取样间隔为0.5 t2=0:p2:5; %定义时间范围 x2=exp(-2*t2); %定义输入信号

lsim(b,a,x2,t2), hold off %对取样间隔为0.5时系统响应进行仿真并解除保持

运行结果如下:

2 已知一个过阻尼二阶系统的状态方程和输出方程分别为:

010'()()()232x t X t f t ????=+????--????

, r (t )=[0 1]X (t ) 。

若系统初始状态为X (0)=[4 -5]T , 求系统在4()3()t f t e t ε-=作用下的全响应。 求全响应程序如下:

A=[0 1 ; -2 -3] ;B=[0 2]';C=[0 1];D=[0];

X0=[4 -5]'; %定义系统初始状态 t=0: 0.01:10;

E =[3*exp(-4*t).*ones(size(t))]'; %定义系统激励信号

[r , x]=lsim(A,B,C,D,E,t,X0); %求出系统全响应的数值解 plot(t,r) %绘制系统全响应波形 运行结果如右。

3 已知描述离散系统的差分方程为:()0.25(1)0.5(2)()(1)y k y k y k f k f k --+-=+-,

且已知系统输入序列为12()()()

k

f k k ε=, ① 求出系统的单位函数响应h (k )在-3 ~10离散时间范围内响应波形。

② 求出系统零状态响应在0 ~15区间上的样值;并画出输入序列的时域波形以及系统零状态响应的波形

分析:①求系统的单位函数响应的MATLAB 程序:

a=[1,-0.25,0.5]; b=[1,1,0];

impz(b,a,-3:10), title('单位响应') %绘出单位函数响应在-3 ~10区间上的波形

运行结果如图a 。

②求零状态响应的MATLAB 程序:

a=[1,-0.25,0.5];b=[1,1,0]

k=0:15; %定义输入序列取值范围 x=(1/2).^k; %定义输入序列表达式

y=filter(b,a,x) %求解零状态响应样值 subplot(2,1,1),stem(k,x) %绘制输入序列的波形 title('输入序列')

subplot(2,1,2),stem(k,y) %绘制零状态响应的波形 title('输出序列')

运行结果如下:

y =

Columns 1 through 10

1.0000 1.7500 0.6875 -0.3281 -0.2383 0.1982 0.2156 -0.0218 -0.1015 -0.0086 Columns 11 through 16

图a. ①运行结果 图b. ②运行结果

实验内容

1. 已知描述系统的微分方程和激励信号e (t ) 分别如下,并用MATLAB 绘出系统单位冲激响应和系统零状态响应的波形.

①''()4'()4()'()3()y t y t y t f t f t ++=+;()()t f t e t ε-= ②''()2'()26()'()y t y t y t f t ++=;()()f t t ε= ③''()4'()3()()y t y t y t f t ++=;2()()t f t e t ε-=

④如下图所示的电路中,已知1234()R R R ===Ω,121()L L H ==,且两电感上初始电流分别为12(0)2(),(0)0()i A i A ==,如果以电阻3R 上电压()y t 作为系统输出,请求出系统在激励()12()f t t ε=(v )作用下的全响应。

2. 请用MATLAB 分别求出下列差分方程所描述的离散系统,在0~20时间范围内的单位函数响应、阶跃响应和系统零状态响应的数值解,并绘出其波形。另外,请将理论值与MATLAB 仿真结果在对应点上的值作比较,并说出两者的区别和产生误差的原因。

① ()2(1)(2)()y k y k y k f k +-+-=;14

()()f k k ε=

② (2)0.7(1)0.1()7(2)2(1)y k y k y k f k f k +-++=+-+;()()f k k ε=

③ 51

66()(1)(2)()(2)

y k y k y k f k f k --+-=--;()()f k k ε= ④一带通滤波器可由下列差分方程描述:()0.81(2)()(2)y k y k f k f k +-=--, 其中()f k 为系统输入, ()y k 为系统输出。请求出当激励为

[]()1010cos(/2)10cos()()f k kn kn k ε=++(选取适当的n 值)时滤波器的稳态输出。

(四)、傅里叶变换的MATLAB 实现

①在MATLAB 中实现傅里叶变换的函数为:

F=fourier( f ) 对f(t)进行傅里叶变换,其结果为F(w) F =fourier(f,v) 对f(t)进行傅里叶变换,其结果为F(v) F=fourier( f,u,v ) 对f(u)进行傅里叶变换,其结果为F(v) ②傅里叶反变换

f=ifourier( F ) 对F(w)进行傅里叶反变换,其结果为f(x) f=ifourier(F,U) 对F(w)进行傅里叶反变换,其结果为f(u) f=ifourier( F,v,u ) 对F(v)进行傅里叶反变换,其结果为f(u) 例① 求门函数()(1)(1)f t t t εε=+--的傅里叶变换,并画出幅度频谱图

MATLAB 程序如下:

syms t w %定义两个符号变量t,w Gt=sym('Heaviside(t+1)-Heaviside(t-1)'); %产生门宽为2的门函数

Fw=fourier(Gt,t,w); %对门函数作傅氏变换求F(jw)

FFw=maple('convert',Fw,'piecewise'); %数据类型转换,转为分段函数,此处可以去掉

FFP=abs(FFw); %求振幅频谱| F(jw)|

ezplot(FFP,[-10*pi 10*pi]);grid; %绘制函数图形,并加网格 axis([-10*pi 10*pi 0 2.2]) %限定坐标轴范围

运行结果:Fw= exp(i*w)*(pi*Dirac(w)-i/w)-exp(-i*w)*(pi*Dirac(w)-i/w)

% Dirac(w)为δ(ω),即傅立叶变换结果中含有奇异函数,故绘图前需作函数类型

转换

FFw= -i*exp(i*w)/w+i*exp(-i*w)/w % FFw 为复数

FFP= abs(-i*exp(i*w)/w+i*exp(-i*w)/w) %求FFw 的模值

例② 求函数2

1

()1F j ωω

=

+的傅里叶反变换f (t ) MATLAB 程序如下:

syms t w %定义两个符号变量t,w Fw=sym('1/(1+w^2)'); %定义频谱函数F(jw)

ft=ifourier(Fw,w,t); %对频谱函数F(jw)进行傅氏反变换

运行结果: ft =

1/2*exp(-t)*Heaviside(t)+1/2*exp(t)*Heaviside(-t)

2、傅里叶变换的数值计算实现法

严格说来,如果不使用symbolic 工具箱,是不能分析连续时间信号的。采用数值计算方法实现连续时间信号的傅里叶变换,实质上只是借助于MATLAB 的强大数值计算功能,特别是其强大的矩阵运算能力而进行的一种近似计算。傅里叶变换的数值计算实现法的原理如下:

对于连续时间信号f(t),其傅里叶变换为:

()F j ω0

()lim

()j t

j n n f t e

dt f n e ωωττττ∞

---∞

→=-∞

==∑

?

其中τ为取样间隔,如果f(t)是时限信号,或者当|t|大于某个给定值时,f(t)的值已经衰减得很厉害,可以近似地看成是时限信号,则上式中的n 取值就是有限的,假定为N ,有: ()F j ω1

()N j n n f n e

ωτ

τ

τ--==∑

若对频率变量ω进行取样,得:

()()k F k F j ω=1

()0k N j n n f n e k M ωτ

ττ--==<<∑

通常取:

2k k k M

M ωπ

ωτ

==

,其中0ω是要取的频率范围,或信号的频带宽度。采用MATLAB 实现上式时,其要点是要生成f(t)的N 个样本值()f n τ的向量,以及向量k j n e

ωτ

-,两向量的

内积(即两矩阵的乘积),结果即完成上式的傅里叶变换的数值计算。

注意:时间取样间隔τ的确定,其依据是τ必须小于奈奎斯特(Nyquist )取样间隔。如果f(t)不是严格的带限信号,则可以根据实际计算的精度要求来确定一个适当的频率0ω为信号的带宽。

例③ 用数值计算法实现上面门函数()(1)(1)f t t t εε=+--的傅里叶变换,并画出幅度频谱图.

分析: 该信号的频谱为()2()F j Sa ωω=,其第一个过零点频率为π,一般将此频率认为是信号的带宽。但考虑到()F j ω的形状(为抽样函数),假如将精度提高到该值的50倍,即取05050B ωωπ==,则据此确定的Nyquist 取样间隔为:0011

0.02222F τωπ

==?。

MATLAB 程序如下:

R=0.02; %取样间隔τ=0.02 t=-2:R:2; % t 为从-2到2,间隔为0.02的行向量,有201个样本点 ft=[zeros(1,50),ones(1,101),zeros(1,50)]; % 产生f(t)的样值矩阵(即f(t)的样本值组

成的行向量)

W1=10*pi; %取要计算的频率范围

M=500; k=0:M; w=k*W1/M; %频域采样数为M, w 为频率正半轴的采样点 Fw=ft*exp(-j*t'*w)*R; %求傅氏变换F(jw) FRw=abs(Fw); %取振幅

W=[-fliplr(w),w(2:501)] ; %由信号双边频谱的偶对称性,利用fliplr(w)

形成负半轴的点,% w(2:501)为正半轴的点,函数fliplr(w)对矩阵w 行向量作180度反转

FW=[fliplr(FRw),FRw(2:501)]; %形成对应于2M+1个频率点的值

Subplot(2,1,1) ; plot(t,ft) ;grid; %画出原时间函数f(t)的波形,并加网格 xlabel('t') ; ylabel('f(t)'); %坐标轴标注 title('f(t)=u(t+1)-u(t-1)'); %文本标注

subplot(2,1,2) ; plot(W,FW) ;grid on; %画出振幅频谱的波形,并加网格 xlabel ('W') ; ylabel ('F(W)'); %坐标轴标注 title('f(t)的振幅频谱图'); %文本标注

运行结果如下:

三、 实验内容

1.编程实现求下列信号的幅度频谱

(1) 求出1()(21)(21)f t t t εε=+--的频谱函数F 1(j ω),请将它与上面门宽为2的门

函数()(1)(1)f t t t εε=+--的频谱进行比较,观察两者的特点,说明两者的关系。

(2) 三角脉冲 21||||1

()0

||1

t t f t t -≤?=?

>? (3) 单边指数信号3()()t f t e t ε-= (4) 高斯信号2

3()t f t e -=

2.利用ifourier( ) 函数求下列频谱函数的傅氏反变换

(1)22()16F j j ωωω=-+ (2) 22

()58

()()65

j j F j j j ωωωωω+-=++

例4:若()s i n ()4

n x n π

=是一个N=32的有限序列,利用MATLAB 计算它的DFT 并画出图形。

N=32; n=0:N-1;

xn=cos(pi*n/6); k=0:N-1;

WN=exp(-j*2*pi/N); nk=n ’*k;

WNnk=WN.^nk; Xk=xn*WNnk; figure(1)

stem(n,xn) figure(2)

stem(k,abs(Xk))

在MATLAB 中,可以直接利用内部函数fft 来实现FFT 算法,该函数是机器语言,而不是MATLAB 指令写成的,执行速度很快。常用格式为: y=fft(x) y=fft(x,N)

4.2 )4/sin()8/sin()(ππn n n x +=是一个N =16的有限序列,用MATLAB 求其DFT 的结果,并画出其结果图,如图3-1所示。

图 3-1 有限长序列的DFT 结果图

程序 N=16;

n=0:1:N-1; %时域采样 xn=sin(n*pi/8)+sin(n*pi/4); k=0:1:N-1; %频域采样 WN=exp(-j*2*pi/N); nk=n'*k; WNnk=WN.^nk;

Xk=xn*WNnk;

subplot(2,1,1)

stem(n,xn);

subplot(2,1,2)

stem(k,abs(Xk));

n

j

(3/π

=,n=[0,10]

)

n

9.0(

e

x)

运算结果

Xk =

Columns 1 through 5

0.0000 -0.0000 - 8.0000i -0.0000 - 8.0000i 0.0000 - 0.0000i 0.0000 - 0.0000i

Columns 6 through 10

-0.0000 - 0.0000i 0.0000 - 0.0000i 0.0000 - 0.0000i 0.0000 - 0.0000i 0.0000 - 0.0000i

Columns 11 through 15

0.0000 - 0.0000i 0.0000 - 0.0000i 0.0000 - 0.0000i 0.0000 - 0.0000i 0.0000 + 8.0000i

Column 16

0.0000 + 8.0000i

用MATLAB计算序列{-2 0 1 –1 3}和序列{1 2 0 -1}的离散卷积。

解 MATLAB程序如下:

a=[-2 0 1 -1 3];

b=[1 2 0 -1];

c=conv(a,b);

M=length(c)-1;

n=0:1:M;

stem(n,c);

xlabel('n'); ylabel('幅度');

图1.1给出了卷积结果的图形,求得的结果存放在数组c中为:{-2 -4 1 3 1 5 1 -3}。

1-2 用MATLAB计算差分方程

当输入序列为时的输出结果。

解 MATLAB程序如下:

N=41;

a=[0.8 -0.44 0.36 0.22];

b=[1 0.7 -0.45 -0.6];

x=[1 zeros(1,N-1)];

k=0:1:N-1;

y=filter(a,b,x);

stem(k,y)

xlabel('n');ylabel('幅度')

图 1.2 给出了该差分方程的前41个样点的输出,即该系统的单位脉冲响应。

用MATLAB 计算例1-2差分方程

所对应的系统函数的DTFT 。

解 例1-2差分方程所对应的系统函数为:

123

123

0.80.440.360.02()10.70.450.6z z z H z z z z -------++=

+--

其DTFT 为

23230.80.440.360.02()10.70.450.6j j j j j j j e e e H e

e e e ωωωω

ωωω--------++=

+--

用MATLAB 计算的程序如下: k=256;

num=[0.8 -0.44 0.36 0.02]; den=[1 0.7 -0.45 -0.6]; w=0:pi/k:pi;

h=freqz(num,den,w); subplot(2,2,1);

plot(w/pi,real(h));grid title('实部')

xlabel('\omega/\pi');ylabel('幅度') subplot(2,2,2);

plot(w/pi,imag(h));grid title('虚部')

xlabel('\omega/\pi');ylabel('Amplitude') subplot(2,2,3);

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数学实验第二版答案(胡良剑)

数学实验答案 Chapter 1 Page20,ex1 (5) 等于[exp(1),exp(2);exp(3),exp(4)] (7) 3=1*3, 8=2*4 (8) a为各列最小值,b为最小值所在的行号 (10) 1>=4,false, 2>=3,false, 3>=2, ture, 4>=1,ture (11) 答案表明:编址第2元素满足不等式(30>=20)和编址第4元素满足不等式(40>=10) (12) 答案表明:编址第2行第1列元素满足不等式(30>=20)和编址第2行第2列元素满足不等式(40>=10) Page20, ex2 (1)a, b, c的值尽管都是1,但数据类型分别为数值,字符,逻辑,注意a与c相等,但他们不等于b (2)double(fun)输出的分别是字符a,b,s,(,x,)的ASCII码 Page20,ex3 >> r=2;p=0.5;n=12; >> T=log(r)/n/log(1+0.01*p) Page20,ex4 >> x=-2:0.05:2;f=x.^4-2.^x; >> [fmin,min_index]=min(f) 最小值最小值点编址 >> x(min_index) ans = 0.6500 最小值点 >> [f1,x1_index]=min(abs(f)) 求近似根--绝对值最小的点 f1 = 0.0328 x1_index = 24 >> x(x1_index) ans = -0.8500 >> x(x1_index)=[];f=x.^4-2.^x; 删去绝对值最小的点以求函数绝对值次小的点 >> [f2,x2_index]=min(abs(f)) 求另一近似根--函数绝对值次小的点 f2 = 0.0630 x2_index = 65 >> x(x2_index) ans = 1.2500

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及应用》实验指导书 班级:T1243-7 姓名:柏元强 学号:20120430724 总评成绩: 汽车工程学院 电测与汽车数字应用中心

目录 实验04051001 MATLAB语言基础 (1) 实验04051002 MATLAB科学计算及绘图 (18) 实验04051003 MATLAB综合实例编程 (31)

实验04051001 MATLAB语言基础 1实验目的 1)熟悉MATLAB的运行环境 2)掌握MATLAB的矩阵和数组的运算 3)掌握MATLAB符号表达式的创建 4)熟悉符号方程的求解 2实验内容 第二章 1.创建double的变量,并进行计算。 (1)a=87,b=190,计算 a+b、a-b、a*b。 clear,clc a=double(87); b=double(190); a+b,a-b,a*b (2)创建 uint8 类型的变量,数值与(1)中相同,进行相同的计算。 clear,clc a=uint8(87); b=uint8(190); a+b,a-b,a*b 2.计算:

(1) () sin 60 (2) e3 (3) 3cos 4??π ??? clear,clc a=sind(60) b=exp(3) c=cos(3*pi/4) 3.设2u =,3v =,计算: (1) 4 log uv v (2) () 2 2 e u v v u +- (3) clear,clc u=2;v=3; a=(4*u*v)/log(v) b=((exp(u)+v)^2)/(v^2-u) c=(sqrt(u-3*v))/(u*v) 4.计算如下表达式: (1) ()() 3542i i -+ (2) () sin 28i - clear,clc (3-5*i)*(4+2*i) sin(2-8*i)

实验二 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实验五分支结构程序设计答案

实验五分支结构程序设计 实验内容 (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实验二

实验2 MATLAB数值计算、符号运算功能 一、实验目的 1、掌握建立矩阵、矩阵分析与处理的方法。 2、掌握线性方程组的求解方法。 3、掌握数据统计和分析方法、多项式的常用运算。 4、掌握求数值导数和数值积分、常微分方程数值求解、非线性代数方程数值求解的方法。 5、掌握定义符号对象的方法、符号表达式的运算法则及符号矩阵运算、符号函数极限及导数、符号函数定积分和不定积分的方法。 二、预习要求 (1)复习4、5、6章所讲内容; (2)熟悉MATLAB中的数值计算和符号运算的实现方法和主要函数。 三、实验内容 1、已知 29618 20512 885 A -?? ?? =?? ?? - ?? ,求A的特征值及特征向量,并分析其数学意义。 >> A=[-29,6,18;20,5,12;-8,8,5]; >> [V,D]=eig(A) V = 0.7130 0.2803 0.2733 -0.6084 -0.7867 0.8725 0.3487 0.5501 0.4050 D = -25.3169 0 0 0 -10.5182 0 0 0 16.8351 V为A的特征向量,D为A的特征值,3个特征值是-25.3169、10.5182和16.8351。 >> A*V ans = -18.0503 -2.9487 4.6007 15.4017 8.2743 14.6886 -8.8273 -5.7857 6.8190 >> V*D

ans = -18.0503 -2.9487 4.6007 15.4017 8.2743 14.6886 -8.8273 -5.7857 6.8190 经过计算,A*V=V*D 。 2、 不用rot90函数,实现方阵左旋90°或右旋90°的功能。例如,原矩阵为A ,A 左旋后得到B ,右旋后得到C 。 147102581136912A ????=??????,101112789456123B ??????=??????,321654987121110B ??????=?????? 提示:先将A 转置,再作上下翻转,则完成左旋90°;如将A 转置后作左右翻转,则完成右旋转90°,可用flipud 、fliplr 函数。 >> a=[1 4 7 10;2 5 8 11;3 6 9 12] a= 1 4 7 10 2 5 8 11 3 6 9 12 >> B=rot90(a) B = 10 11 12 7 8 9 4 5 6 1 2 3 >>C= rot90(s,3) C= 3 2 1 6 5 4 9 8 7 12 11 10

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程序设计与应用第二版刘卫国课后实验答案

. 实验一: T1: %%第一小题 z1=2*sin(85*pi/180)/(1+exp(2)) %%第二小题 x=[2,1+2i;-0.45,5]; z2=1/2*log(x+sqrt(1+x.^2)); z2 %%第三小题 a=-3.0:0.1:3.0; z3=1/2*(exp(0.3*a)-exp(-0.3*a)).*sin(a+ 0.3)+log((0.3+a)/2) %%第四题 t=0:0.5:2.5 z4=(t>=0&t<1).*(t.^2)+(t>=1&t<2).*(t .^2-1)+(t>=2&t<3).*(t.^2-2*t+1) T2: A=[12,34,-4;34,7,87;3,65,7] B=[1,3,-1;2,0,3;3,-2,7] disp ('A+6*B='); disp(A+6*B); disp('A-B+I=');disp(A-B+eye(3)); disp('A*B='); disp(A*B); disp('A.*B='); disp(A.*B); disp('A^3='); disp(A^3); disp('A.^3='); disp(A.^3); disp('A/B='); disp(A/B); disp('B\A='); disp(B\A); disp('[A,B]='); disp([A,B]); disp('[A([1,3],:);B^2]='); disp([A([1,3],:);B^2]); T3: z=1:25; A=reshape(z,5,5)'; B=[3,0,16;17,-6,9;0,23,-4;9,7,0;4,13,11]; C=A*B

MATLAB实验报告实验二

实验二 MATLAB矩阵及其运算 学号:3121003104 姓名:刘艳琳专业:电子信息工程1班日期:2014.9.20 一实验目的 1、掌握Matlab数据对象的特点以及数据的运算规则。 2、掌握Matlab中建立矩阵的方法以及矩阵处理的方法。 3、掌握Matlab分析的方法。 二实验环境 PC_Windows 7旗舰版、MATLAB 7.10 三实验内容 4、1. (1)新建一个.m文件,验证书本第15页例2-1; (2)用命令方式查看和保存代码中的所有变量;

(3)用命令方式删除所有变量; (4)用命令方式载入变量z。 2. 将x=[4/3 1.2345e-6]在以下格式符下输出:短格式、短格式e方式、长格式、长格式e方式、银行格式、十六进制格式、+格式。 短格式 短格式e 长格式

长格式e方式 银行格式 十六进制格式 3.计算下列表达式的值 (1)w=sqrt(2)*(1+0.34245*10^(-6)) (2)x=(2*pi*a+(b+c)/(pi+a*b*c)-exp(2))/(tan(b+c)+a) a=3.5;b=5;c=-9.8; (3)y=2*pi*a^2*((1-pi/4)*b-(0.8333-pi/4)*a) a=3.32;b=-7.9; (4)z=0.5*exp(2*t)*log(t+sqrt(1+t*t)) t=[2,1-3i;5,-0.65];

4. 已知A=[1 2 3 4 5 ;6 7 8 9 10;11 12 13 14 15;16 17 18 19 20],对其进行如下操作:(1)输出A在[ 7, 10]范围内的全部元素; (2)取出A的第2,4行和第1,3,5列; (3)对矩阵A变换成向量B,B=[1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20]; (4)删除A的第2,3,4行元素; (1) (2)

南邮MATLAB数学实验答案(全)

第一次练习 教学要求:熟练掌握Matlab 软件的基本命令和操作,会作二维、三维几何图形,能够用Matlab 软件解决微积分、线性代数与解析几何中的计算问题。 补充命令 vpa(x,n) 显示x 的n 位有效数字,教材102页 fplot(‘f(x)’,[a,b]) 函数作图命令,画出f(x)在区间[a,b]上的图形 在下面的题目中m 为你的学号的后3位(1-9班)或4位(10班以上) 1.1 计算30sin lim x mx mx x →-与3 sin lim x mx mx x →∞- syms x limit((902*x-sin(902*x))/x^3) ans = 366935404/3 limit((902*x-sin(902*x))/x^3,inf) ans = 0 1.2 cos 1000 x mx y e =,求''y syms x diff(exp(x)*cos(902*x/1000),2) ans = (46599*cos((451*x)/500)*exp(x))/250000 - (451*sin((451*x)/500)*exp(x))/250 1.3 计算 22 11 00 x y e dxdy +?? dblquad(@(x,y) exp(x.^2+y.^2),0,1,0,1) ans = 2.1394 1.4 计算4 2 2 4x dx m x +? syms x int(x^4/(902^2+4*x^2)) ans = (91733851*atan(x/451))/4 - (203401*x)/4 + x^3/12 1.5 (10)cos ,x y e mx y =求 syms x diff(exp(x)*cos(902*x),10) ans = -356485076957717053044344387763*cos(902*x)*exp(x)-3952323024277642494822005884*sin(902*x)*exp(x) 1.6 0x =的泰勒展式(最高次幂为4).

MATLAB实验二(修改)

实验二 信号的表示及其基本运算 一、实验目的 1、掌握连续信号及其MATLAB 实现方法; 2、掌握离散信号及其MA TLAB 实现方法 3、掌握离散信号的基本运算方法,以及MA TLAB 实现 4 熟悉应用MATLAB 实现求解系统响应的方法 4、了解离散傅里叶变换的MA TLAB 实现 5、了解IIR 数字滤波器设计 6、了解FIR 数字滤波器设计1 二、实验设备 计算机,Matlab 软件 三、实验内容 (一)、 连续信号及其MATLAB 实现 1、 单位冲激信号 ()0,0()1,0 t t t dt ε ε δδε-?=≠??=?>??? 例1.1:单位冲击信号的MATLAB 实现程序如下: t1=-4; t2=4; t0=0; dt=0.01; t=t1:dt:t2; n=length(t); x=zeros(1,n); x(1,(-t0-t1)/dt+1)=1/dt; stairs(t,x); axis([t1,t2,0,1.2/dt]); 2、 任意函数 ()()()f t f t d τδττ+∞ -∞ =-? 例1.2:用MA TLAB 画出如下表达式的脉冲序列 ()0.4(2)0.8(1) 1.2() 1.5(1) 1.0(2)0.7(3)f n n n n n n n δδδδδδ=-+-+++++++ 3 单位阶跃函数 1,0()0, t u t t ?≥?=?

t=-0.5:0.001:1; t0=0; u=stepfun(t,t0); plot(t,u) axis([-0.5 1 -0.2 1.2]) 4 斜坡函数 0()()g t B t t =- 例1.4:用MA TLAB 实现g(t)=3(t-1) clear all; t=0:0.01:3; B=3; t0=1; u=stepfun(t,t0); n=length(t); for i=1:n u(i)=B*u(i)*(t(i)-t0); end plot(t,u) axis([-0.2 3.1 -0.2 6.2]) 5 抽样信号 抽样信号Sa(t)=sin(t)/t 在MATLAB 中用 sinc 函数表示。 定义为 )/(sin )(πt c t Sa = t=-3*pi:pi/100:3*pi; ft=sinc(t/pi); plot(t,ft); grid on; axis([-10,10,-0.5,1.2]); %定义画图范围,横轴,纵轴 title('抽样信号') %定义图的标题名字 6 指数函数 ()at f t Ae = 例1.5:用MA TLAB 实现0.5()3t f t e = 7 正弦函数 2()cos( )t f t A T π?=+ 例1.6:用MA TLAB 实现正弦函数f(t)=3cos(10πt+1) 8 虚指数信号 例 虚指数信号 调用格式是f=exp((j*w)*t) t=0:0.01:15;

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 课后实验题答案 实验一 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实验

MATLAB实验报告 学校:湖北文理学院 学院:物理与电子工程学院 专业:电子信息工程 学号: 2013128182 姓名:张冲 指导教师:宋立新

实验一 MATLAB环境的熟悉与基本运算 一、实验目的: 1.熟悉MATLAB开发环境 2.掌握矩阵、变量、表达式的各种基本运算 二、实验内容 1、学习使用help命令,例如在命令窗口输入help eye,然后根据帮助说明, 学习使用指令eye(其它不会用的指令,依照此方法类推) 2、学习使用clc、clear,观察command window、command history和workspace 等窗口的变化结果。 3、初步程序的编写练习,新建M-file,保存(自己设定文件名,例如exerc1、 exerc2、exerc3……),学习使用MATLAB的基本运算符。 三、练习 1)help rand,然后随机生成一个2×6的数组,观察command window、 command history和workspace等窗口的变化结果。 2)学习使用clc、clear,了解其功能和作用。 3)用逻辑表达式求下列分段函数的值 4)求[100,999]之间能被21整除的数的个数。(提示:rem,sum的用法) 四、实验结果 1)

2)clc:清除命令窗口所有内容,数值不变;clear:初始化变量的值。3) 4)

实验二 MATLAB数值运算 一、实验目的 1、掌握矩阵的基本运算 2、掌握矩阵的数组运算 二、实验内容 1)输入C=1:2:20,则C(i)表示什么?其中i=1,2,3, (10) 2)输入A=[7 1 5;2 5 6;3 1 5],B=[1 1 1; 2 2 2; 3 3 3],在命令窗 口中执行下列表达式,掌握其含义: A(2, 3) A(:,2) A(3,:) A(:,1:2:3) A(:,3).*B(:,2) A(:,3)*B(2,:) A*B A.*B A^2 A.^2 B/A B./A 3)二维数组的创建和寻访,创建一个二维数组(4×8)A,查询数组A第2 行、第3列的元素,查询数组A第2行的所有元素,查询数组A第6列的所有 元素。 4)两种运算指令形式和实质内涵的比较。设有3个二维数组A 2×4,B 2×4 ,C 2×2 , 写出所有由2个数组参与的合法的数组运算和矩阵指令。 5)学习使用表4列的常用函数(通过help方法) 6)学习使用表5数组操作函数。 7)生成一个3行3列的随机矩阵,并逆时针旋转90°,左右翻转,上下翻转。 8)已知a=[1 2 3],b=[4 5 6],求a.\b和a./ b 9)用reshape指令生成下列矩阵,并取出方框内的数组元素。 三、实验结果 1)C(i)表示C中的第i个的数值;

河南城建学院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程序设计与应用(第二版)刘卫国主编_部分实验答案

实验六 2_1 clear; x=linspace(0,2*pi,101); y1=x.^2; y2=cos(2.*x); y3=y1.*y2; plot(x,y1,'b-',x,y2,'r:',x,y3,'g-.'); %y1蓝色实线,y2红色虚线,y3绿色点画线 2_2 subplot(2,2,1); %分四个子图(先画2行2列第1块) plot(x,y1); subplot(2,2,2); plot(x,y2), subplot(2,2,3); plot(x,y3);

2_3 () subplot(3,4,1); %y1的四种图形bar(x,y1); subplot(3,4,2); stairs(x,y1), subplot(3,4,3); stem(x,y1); subplot(3,4,4); fill(x,y1,'b'); subplot(3,4,5); %y2 bar(x,y2); %条形图subplot(3,4,6); stairs(x,y2), %阶梯图subplot(3,4,7); stem(x,y2); %杆图subplot(3,4,8);

fill(x,y2,'b'); %填充图,注意必须加填充颜色 subplot(3,4,9); %y3 bar(x,y3); subplot(3,4,10); stairs(x,y3), subplot(3,4,11); stem(x,y3); subplot(3,4,12); fill(x,y3,'b'); 3 clear; x=-5:0.1:5; if x<=0 y=(x+sqrt(pi)/exp(2)); else y=0.5.*log(x+sqrt(1+x.^2));

Matlab实验二

实验二DFS和DFT 实验任务 1、阅读并输入实验原理中介绍的例题程序,观察输出的图形曲线,理解每一条语句的含义。 2、已知一个信号序列的主值为x(n)=[0,1,2,3,2,1,0],显示两个周期的信号序列波形,要求: (1)用DFS求信号的幅度频谱和相位频谱,用图形表示; (2)求IDFS的图形,并与原信号进行比较。 N = 7; xn = [0,1,2,3,2,1,0]; xn = [xn xn]; n = 0:2*N-1; k = 0:2*N-1; Xk = xn*exp(-j*2*pi/N).^(n'*k); x = (Xk*exp(j*2*pi/N).^(n'*k))/(2*2*N); subplot(2,2,1),stem(n,xn); title('x(n)');axis([-2,2*N,1.1*min(xn),1.1*max(xn)]); subplot(2,2,2),stem(n,abs(x)); title('IDFS|X(k)|');axis([-2,2*N,1.1*min(xn),1.1*max(xn)]); subplot(2,2,3),stem(k,abs(Xk)); title('|X(k)|');axis([-2,2*N,1.1*min(abs(Xk)),1.1*max(abs(Xk))]); subplot(2,2,4),stem(k,angle(Xk)); title('arg|X(k)|');axis([-2,2*N,1.1*min(angle(Xk)),1.1*max(angle(Xk)) ]);

3、已知有限长序列x(n)=[7,6,5,4,3,2],求x(n)的DFT 和IDFT ,要求: (1) 画出DFT 对应的()X k 和()arg X k ????的图形。 (2)画出原信号与傅里叶逆变换IDFT[X(k)]图形进行比较 xn = [7 6 5 4 3 2]; N = length(xn); n = 0:N-1; k = 0:N-1; Xk = xn*exp(-j*2*pi/N).^(n'*k); x = (Xk*exp(j*2*pi/N).^(n'*k))/N; figure,subplot(2,2,1),stem(n,xn); title('x(n)'); subplot(2,2,2),stem(n,abs(x)); title('IDFT|X(k)|'); subplot(2,2,3),stem(k,abs(Xk)); title('|X(k)|'); subplot(2,2,4),stem(k,angle(Xk)); title('arg|X(k)|'); axis([0,N,1.1*min(angle(Xk)),1.1*max(angle(Xk))]) 4、一周期序列的主值x(n)=[7,6,5,4,3,2],求x(n)周期周期重复次数为3次时的DFS 。要求: (1)画出原主值和信号周期序列信号; (2)画出序列傅里叶变换对应的()X k %和()arg X k ????%的图形。 xn = [7 6 5 4 3 2];

相关文档
最新文档