信号与系统实验一:基本信号的产生和实现

本文详细介绍了使用MATLAB生成和处理各种基本信号的过程,包括阶跃信号、指数信号、正弦信号、矩形脉冲信号、周期矩形波信号、抽样信号以及离散信号的产生。实验内容涵盖了连续和离散信号的绘制、基本运算,并通过实例展示了卷积和自相关函数的计算。此外,还讨论了卷积和相关在信号分析中的作用。
摘要由CSDN通过智能技术生成

华工实验一 基本信号的产生和实现

一、实验目的:

\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(u1),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.1\pi t)\cos(0.8\pi 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,-5\le k\le5\\0,其他\end{cases} {1,5k50,, 设 − 15 < k ≤ 15 -15<k\le 15 15<k15
在这里插入图片描述

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.25\pi k)+\cos(0.25\pi k)] x[k]=(0.9)k[sin(0.25πk)+cos(0.25πk)] ,设 − 20 < k ≤ 20 -20<k\le20 20<k20
在这里插入图片描述

% 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 y\left[n\right]=x\left[n\right]\ast h\left[n\right]=\sum_{k=-∞}^{+∞}x[k]h[n-k] y[n]=x[n]h[n]=k=+x[k]h[nk]。序列卷积不能直接反应两个信号的相关性。

四、实验思考题:

(1)两个连续信号的卷积定义是什么?两个序列的卷积定义是什么?卷积的作用是什么?conv函数只输出了卷积结果,没有输出对应的时间向量,如何使时间向量和卷积结果对应起来?

答:

  • 两个连续信号的卷积定义是什么?
    y ( t ) = x ( t ) ∗ h ( t ) = ∫ − ∞ + ∞ x ( τ ) h ( t − τ ) d τ y\left(t\right)=x\left(t\right)\ast h\left(t\right)=\int_{-\infty}^{+\infty}x\left(\tau\right)h\left(t-\tau\right)d\tau y(t)=x(t)h(t)=+x(τ)h(tτ)dτ
    可以理解为:其中一个连续信号定义为输入信号,另一个连续信号可定义为一个线性时不变系统的影响的表征,这两个连续信号的卷积表示的便是这个线性时不变系统对该输入信号的处理。

  • 两个序列的卷积定义是什么?
    y [ n ] = x [ n ] ∗ h [ n ] = ∑ k = − ∞ + ∞ x [ k ] h [ n − k ] \displaystyle y\left[n\right]=x\left[n\right]\ast h\left[n\right]=\sum_{k=-∞}^{+∞}x[k]h[n-k] y[n]=x[n]h[n]=k=+x[k]h[nk]
    其中一个序列定义为输入信号,另一个序列可定义为一个线性时不变系统的影响的表征,这两个序列的卷积表示的便是这个线性时不变系统对该输入信号的处理。

  • 卷积的作用是什么?
    卷积表示了一种分解分析信号的方法。它把输入信号 x [ n ] x[n] x[n](以离散信号为例)分解成一组加权幅值的基本函数的叠加,其中基本函数是移位单位脉冲 δ ( n − k ) \delta(n-k) δ(nk),这些移位单位仅有在相对于k上的单一时刻点上非零,即, x [ n ] = ∑ k = − ∞ + ∞ x [ k ] δ [ n − k ] \displaystyle x[n]=\sum_{k=-∞}^{+∞}x[k]\delta[n-k] x[n]=k=+x[k]δ[nk]。由于分解信号后,时间仅与移位单位脉冲有关,当其输入到一个线性时不变系统中,我们可以仅考虑移位单位脉冲的响应 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[nk]

  • 如何使时间向量和卷积结果对应起来?
    可以用卷积结果的特点,如果一个信号的卷积区域为[a,b],另一个信号的卷积区域为[c,d],则卷积结果的区域则是 [ a + c , b + d ] \left[a+c,b+d\right] [a+c,b+d]。所以,我们可以将两个信号的区域最大值和最小值分别相加构成卷积结果最大值和最小值,便可以用该时间区域与conv函数的结果一一对应。

(2)两个连续信号相关的定义是什么?两个序列相关的定义是什么?相关的作用是什么?

答:

  • 两个连续信号相关的定义是什么?
    R x y ( t ) = ∫ − ∞ + ∞ x ( τ ) y ( t + τ ) d τ \displaystyle R_{xy}\left(t\right)=\int_{-\infty}^{+\infty}x\left(\tau\right)y\left(t+\tau\right)d\tau 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产生一些简单的信号波形。同时,在此过程中,在写思考题的时候,积极思考,回忆书中内容,不仅加固了脑中的课本知识,而且理解离散信号和连续信号的卷积和互相关也更加透彻。

  • 19
    点赞
  • 167
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值