概述
华工实验一 基本信号的产生和实现
一、实验目的:
qquad 学习使用MATLAB产生基本信号、绘制信号波形、实现信号的基本运算,为信号分析和系统设计奠定基础。
二、实验原理:
qquad MATLAB提供了许多函数用于产生常用的基本信号:如阶跃信号、脉冲信号、指数信号、正弦信号和周期矩形波信号等。这些基本信号是信号处理的基础。
1.连续信号的产生:
(1)连续阶跃信号的产生:
qquad 产生阶跃信号的MATLAB程序如下:
t= -2: 0.02: 6;
x=(t>=0);
plot(t,x);
axis([-2,6,0,1.2]);
(2)连续指数信号的产生
qquad 产生随时间衰减的指数信号的MATLAB程序如下:
t = 0: 0.001: 5;
x = 2*exp(-1*t);
plot(t,x);
(3)连续正弦信号的产生
qquad 利用MATLAB提供的函数cos和sin可产生正弦和余弦信号。产生一个幅度为2,频率为4Hz,相位为p/6的正弦信号的MATLAB程序如下:
f0=4;
w0=2*pi*f0;
t = 0: 0.001: 1;
x = 2*sin(w0*t+ pi/6);
plot(t,x);
(4)连续矩形脉冲信号的产生
qquad 函数rectpulse(t,w)可产生高度为1、宽度为w、关于t=0对称的矩形脉冲信号。 产生高度为1、宽度为4、延时2秒的矩形脉冲信号的MATLAB程序如下:
t=-2: 0.02: 6;
x=rectpuls(t-2,4);
plot(t,x);
(5)连续周期矩形波信号的产生
qquad
函数square(w0*t)产生基本频率为w0 (周期T=2p/w0)的周期矩形波信号。
qquad
函数square(w0*t, DUTY)产生基本频率为w0 (周期T=2p/w0)、占空比DUTY= t/T*100的周期矩形波。
qquad
t为一个周期中信号为正的时间长度。t=T/2,DUTY=50,square(w0*t, 50)等同于square(w0*t)。
qquad
产生一个幅度为1, 基频为2Hz,占空比为50%的周期方波的MATLAB程序如下:
f0=2;
t = 0:.0001:2.5;
w0=2*pi*f0;
y = square(w0*t, 50); %duty cycle=50%
plot(t,y);
axis([0,2.5,-1.5,1.5]);
(6)连续抽样信号的产生
qquad 可使用函数sinc(x)计算抽样信号 ,函数sinc(x)的定义为 。产生信号 的MATLAB程序如下:
t= -10:1/500:10;
x=sinc(t/pi);
plot(t,x);
2.离散信号的产生
(1)单位脉冲序列的产生
qquad
函数zeros(1,n) 可以生成单位脉冲序列。
qquad
函数zeros(1,n)产生1行n列的由0组成的矩阵。
qquad
产生成单位脉冲序列的MATLAB程序如下:
k= -4: 20;
x=[zeros(1,7),1,zeros(1,17)];
stem(k,x)
(2)单位阶跃序列的产生
qquad
函数ones(1,n) 可以生成单位阶跃序列。
qquad
函数ones(1,n)产生1行n列的由1组成的矩阵。
qquad
产生单位阶跃序列的MATLAB程序如下:
k= -4:20;
x=[zeros(1,7),ones(1,18)];
stem(k,x)
(3)指数序列的产生
qquad 产生离散序列的MATLAB程序如下:
k = -5:15;
x = 0.3*(1/2).^k;
stem(k,x);
(4)正弦序列的产生
qquad 产生正弦序列的MATLAB程序如下:
k=-10:10;
omega=pi/3;x = 0.5*sin(omega*k+ pi/5);
stem(k,x);
(5)白噪声序列的产生
qquad
白噪声序列在信号处理中是常用的序列。
qquad
函数rand可产生在[0,1]区间均匀分布的白噪声序列,
qquad
函数randn可产生均值为0,方差为1的高斯分布白噪声。
N=20;k=0:N-1;
x=rand (1,N)
stem(k,x);
(6)离散周期矩形波序列的产生
qquad 产生幅度为1、基频rad、占空比为50%的周期方波的MATLAB程序如下:
omega=pi/4;
k=-10:10;
x = square(omega*k,50);
stem(k,x);
3.序列的基本运算
离散序列:
x
[
k
]
=
[
1
,
2
,
1
,
1
,
0
,
−
3
;
k
=
0
,
1
,
2
,
3
,
4
,
5
]
x[k]=[1,2,1,1,0,-3;k=0,1,2,3,4,5]
x[k]=[1,2,1,1,0,−3;k=0,1,2,3,4,5],
h
[
k
]
=
[
1
,
−
1
,
1
;
k
=
0
,
1
,
2
]
h[k]=[1,-1,1;k=0,1,2]
h[k]=[1,−1,1;k=0,1,2]
(1)计算离散卷积和
y
[
k
]
=
x
[
k
]
∗
h
[
k
]
y[k]=x[k]*h[k]
y[k]=x[k]∗h[k]
(2)计算离散自相关函数:
R
x
y
[
n
]
=
∑
k
=
−
∞
+
∞
x
[
k
]
y
[
k
+
n
]
displaystyle R_{xy}[n]=sum_{k=-∞}^{+∞}x[k]y[k+n]
Rxy[n]=k=−∞∑+∞x[k]y[k+n]
MATLAB程序如下:
x=[1,2,1,1,0,-3];
h=[1,-1,1];
%计算离散卷积和
y=conv(x,h);
subplot(2,1,1);
stem([0:length(y)-1],y);
title('y[k]');xlabel(' k');
%计算离散自相关函数
y=xcorr(x,x);
subplot(2,1,2);
m=(length(y)-1)/2;
stem([-m:m],y);
title('Rxx[n]');xlabel('n');
三、实验内容:
1.利用Matlab产生下列连续信号并作图。
(1)
x
(
t
)
=
−
2
u
(
u
−
1
)
,
−
1
<
t
<
5
x(t)=-2u(u-1),qquad -1<t<5
x(t)=−2u(u−1),−1<t<5
% 产生x(t)=-2u(t-1)的图像
t= -1: 0.01: 5;
x=-2*((t-1)>=0);
plot(t,x);
axis([-1,5,-2.5,0]);
(2)
x
(
t
)
=
cos
(
0.1
π
t
)
cos
(
0.8
π
t
)
,
0
<
t
<
200
x(t)=cos(0.1pi t)cos(0.8pi t),qquad 0<t<200
x(t)=cos(0.1πt)cos(0.8πt),0<t<200
% x(t)=cos(0.1pi*t)cos(0.8pi*t)
t = 0: 0.01: 200;
x = cos(0.1*pi*t).*cos(0.8*pi*t);
plot(t, x);
axis([0, 200, -2, 2]);
2.利用Matlab产生下列离散序列并作图。
(1)
{
1
,
−
5
≤
k
≤
5
0
,
其
他
begin{cases}1,-5le kle5\0,其他end{cases}
{1,−5≤k≤50,其他, 设
−
15
<
k
≤
15
-15<kle 15
−15<k≤15 。
k = -15: 1: 15;
x = ( k >= -5)&( k <= 5);
stem(k, x);
(2)
x
[
k
]
=
(
0.9
)
k
[
sin
(
0.25
π
k
)
+
cos
(
0.25
π
k
)
]
x[k]=(0.9)^k[sin(0.25pi k)+cos(0.25pi k)]
x[k]=(0.9)k[sin(0.25πk)+cos(0.25πk)] ,设
−
20
<
k
≤
20
-20<kle20
−20<k≤20。
% x[k]=(0.9)^k[sin(0.25*pi*k)+cos(0.25*pi*k)]
k = -20: 20;
x = (0.9).^k.*(sin(0.25*pi*k)+cos(0.25*pi*k));
stem(k, x)
3.已知序列
x
[
k
]
=
[
1
,
2
,
0
,
−
1
,
4
,
2
;
k
=
−
2
,
−
1
,
0
,
1
,
2
,
3
]
x[k]=[1,2,0,-1,4,2;k=-2,-1,0,1,2,3]
x[k]=[1,2,0,−1,4,2;k=−2,−1,0,1,2,3],
h
[
k
]
=
[
1
,
−
1
,
1
;
k
=
0
,
1
,
2
]
h[k]=[1,-1,1;k=0,1,2]
h[k]=[1,−1,1;k=0,1,2]。
(1)计算离散序列的卷积和
y
[
k
]
=
x
[
k
]
∗
h
[
k
]
y[k]=x[k]*h[k]
y[k]=x[k]∗h[k],并绘出其波形。
% y[k]=x[k]*h[k]
x = [1, 2, 0, -1, 3, 2];
kx = -2: 3;
h=[1, -1, 1];
kh = 0: 2;
y=conv(x, h);
stem((kx(1)+kh(1)):(kx(end)+kx(end)-1), y);
(2)计算离散序列的相关函数
R
x
y
[
n
]
=
∑
k
=
−
∞
+
∞
x
[
k
]
y
[
k
+
n
]
displaystyle R_{xy}[n]=sum_{k=-∞}^{+∞}x[k]y[k+n]
Rxy[n]=k=−∞∑+∞x[k]y[k+n],并绘出其波形。
x = [1, 2, 0, -1, 3, 2];
kx = -2: 3;
h=[1, -1, 1];
kh = 0: 2;
y=conv(x, h);
R=xcorr(x,y);
m=(length(R)-1)/2;
stem(-m:m-2,R(1:13));
qquad
由于xcorr函数会自动补零进而使两个信号长度相等,所以我把零给去掉了,得到了如上的实际图像。
(3) 序列相关与序列卷积有何关系?
qquad
序列相关表示的是两个离散信号之间相似度,用如下公式计算:
R
x
y
[
n
]
=
∑
k
=
−
∞
+
∞
x
[
k
]
y
[
k
+
n
]
displaystyle R_{xy}[n]=sum_{k=-∞}^{+∞}x[k]y[k+n]
Rxy[n]=k=−∞∑+∞x[k]y[k+n]
qquad
序列卷积则是通过分解离散信号来计算线性时不变系统中的响应的,采用如下公式计算:
y
[
n
]
=
x
[
n
]
∗
h
[
n
]
=
∑
k
=
−
∞
+
∞
x
[
k
]
h
[
n
−
k
]
displaystyle yleft[nright]=xleft[nright]ast hleft[nright]=sum_{k=-∞}^{+∞}x[k]h[n-k]
y[n]=x[n]∗h[n]=k=−∞∑+∞x[k]h[n−k]。序列卷积不能直接反应两个信号的相关性。
四、实验思考题:
(1)两个连续信号的卷积定义是什么?两个序列的卷积定义是什么?卷积的作用是什么?conv函数只输出了卷积结果,没有输出对应的时间向量,如何使时间向量和卷积结果对应起来?
答:
-
两个连续信号的卷积定义是什么?
y ( t ) = x ( t ) ∗ h ( t ) = ∫ − ∞ + ∞ x ( τ ) h ( t − τ ) d τ yleft(tright)=xleft(tright)ast hleft(tright)=int_{-infty}^{+infty}xleft(tauright)hleft(t-tauright)dtau y(t)=x(t)∗h(t)=∫−∞+∞x(τ)h(t−τ)dτ
可以理解为:其中一个连续信号定义为输入信号,另一个连续信号可定义为一个线性时不变系统的影响的表征,这两个连续信号的卷积表示的便是这个线性时不变系统对该输入信号的处理。 -
两个序列的卷积定义是什么?
y [ n ] = x [ n ] ∗ h [ n ] = ∑ k = − ∞ + ∞ x [ k ] h [ n − k ] displaystyle yleft[nright]=xleft[nright]ast hleft[nright]=sum_{k=-∞}^{+∞}x[k]h[n-k] y[n]=x[n]∗h[n]=k=−∞∑+∞x[k]h[n−k]
其中一个序列定义为输入信号,另一个序列可定义为一个线性时不变系统的影响的表征,这两个序列的卷积表示的便是这个线性时不变系统对该输入信号的处理。 -
卷积的作用是什么?
卷积表示了一种分解分析信号的方法。它把输入信号 x [ n ] x[n] x[n](以离散信号为例)分解成一组加权幅值的基本函数的叠加,其中基本函数是移位单位脉冲 δ ( n − k ) delta(n-k) δ(n−k),这些移位单位仅有在相对于k上的单一时刻点上非零,即, x [ n ] = ∑ k = − ∞ + ∞ x [ k ] δ [ n − k ] displaystyle x[n]=sum_{k=-∞}^{+∞}x[k]delta[n-k] x[n]=k=−∞∑+∞x[k]δ[n−k]。由于分解信号后,时间仅与移位单位脉冲有关,当其输入到一个线性时不变系统中,我们可以仅考虑移位单位脉冲的响应 h [ n ] h[n] h[n],然后由于线性,我们可以得到原来输入信号通过该线性时不变系统的响应, y [ n ] = ∑ k = − ∞ + ∞ x [ k ] h [ n − k ] displaystyle y[n]=sum_{k=-∞}^{+∞}x[k]h[n-k] y[n]=k=−∞∑+∞x[k]h[n−k] -
如何使时间向量和卷积结果对应起来?
可以用卷积结果的特点,如果一个信号的卷积区域为[a,b],另一个信号的卷积区域为[c,d],则卷积结果的区域则是 [ a + c , b + d ] left[a+c,b+dright] [a+c,b+d]。所以,我们可以将两个信号的区域最大值和最小值分别相加构成卷积结果最大值和最小值,便可以用该时间区域与conv函数的结果一一对应。
(2)两个连续信号相关的定义是什么?两个序列相关的定义是什么?相关的作用是什么?
答:
-
两个连续信号相关的定义是什么?
R x y ( t ) = ∫ − ∞ + ∞ x ( τ ) y ( t + τ ) d τ displaystyle R_{xy}left(tright)=int_{-infty}^{+infty}xleft(tauright)yleft(t+tauright)dtau Rxy(t)=∫−∞+∞x(τ)y(t+τ)dτ
两个连续信号相关定义:表征着这两个连续时间信号之间的相关程度。即,互相关函数就是描述连续时间信号x(t)和y(t)在任意两个不同时刻 t 1 , t 2 t_1,t_2 t1,t2的取值之间的相关程度。 -
两个序列相关的定义是什么?
R x y [ n ] = ∑ k = − ∞ + ∞ x [ k ] y [ k + n ] displaystyle R_{xy}[n]=sum_{k=-∞}^{+∞}x[k]y[k+n] Rxy[n]=k=−∞∑+∞x[k]y[k+n]
两个序列相关定义:表征着这两个序列之间的相关程度。即,互相关函数就是描述两个序列x[n]和y[n]在任意两个不同位置 n 1 , n 2 n_1,n_2 n1,n2的取值之间的相关程度。 -
相关的作用是什么?
相关表征的是两个信号在相对时间上的相似程度,通过相关的计算,我们可以获得两个时间坐标不同信号之间的相似度,借此我们可以用已知信号对未知信号求相关,来获取未知信号的特点。
(3)能够利用MATLAB产生单位冲激信号吗?
答:能。对于连续信号,可以用标准差趋近于零的高斯函数模拟。对于离散信号则可以直接令单个位置为1即可。
(4)产生连续信号时,首先要定义时间向量t = 0:T:Tp。 其中T和Tp是什么意思?
答:T代表步长;Tp代表终止时间。
五、实验收获
qquad 通过这次的实验,我学会了matlab的基本用法,能够用matlab产生一些简单的信号波形。同时,在此过程中,在写思考题的时候,积极思考,回忆书中内容,不仅加固了脑中的课本知识,而且理解离散信号和连续信号的卷积和互相关也更加透彻。
最后
以上就是风中电灯胆为你收集整理的信号与系统实验一:基本信号的产生和实现华工实验一 基本信号的产生和实现的全部内容,希望文章能够帮你解决信号与系统实验一:基本信号的产生和实现华工实验一 基本信号的产生和实现所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复