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 ?≤=-≤?-+≤ ,其中t =0:0.5:2.5 解:
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 ?≥?=? ? 例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;
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 ?≤=-≤?-+≤ ,其中t =0:0.5:2.5 解: M 文件: z1=2*sin(85*pi/180)/(1+exp(2)) x=[2 1+2*i;-.45 5]; z2=1/2*log(x+sqrt(1+x^2)) 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) 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. 已知:
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];