《MATLAB信号处理超级学习手册》——2.2 信号的产生

2.2 信号的产生

MATLAB信号处理超级学习手册
本节将使用MATLAB产生基本信号、绘制信号波形、实现信号的基本运算,为信号分析和系统设计奠定基础。

MATLAB提供了许多函数用于产生常用的基本信号,如阶跃信号、脉冲信号、指数信号、正弦信号和周期矩形波信号等,这些基本信号是信号处理的基础。

2.2.1 方波函数
square的调用函数如下所示。

x=square(t):类似于sin(t),产生周期为2*pi,幅值为1的方波。

x=square(t,duty):产生制定周期的矩形波,其中duty用于指定脉冲宽度与整个周期的比例。

【例2-7】一个连续的周期性矩形信号频率为5kHz,信号幅度为0~2V之间,脉冲宽度与周期的比例为1:4,且要求在窗口上显示其2个周期的信号波形,并对信号的一个周期进行16点采样来获得离散信号,显示原连续信号与采样获得的离散信号。

运行程序如下:

f=5000;nt=2;
N=16;T=1/f;
dt=T/N;
n=0:nt*N-1;
tn=n*dt;
x=square(2fpi*tn,25)+1;
%产生时域信号,且幅度在0~2之间
subplot(2,1,1);stairs(tn,x,'k');
axis([0 ntT 1.1min(x) 1.1*max(x)]);
ylabel('x(t)');
subplot(2,1,2);stem(tn,x,'filled','k');
axis([0 ntT 1.1min(x) 1.1*max(x)]);
ylabel('x(n)');

运行结果如图2-7所示。

2.2.2 随机函数
在实际系统的研究和处理中,常常需要产生随机信号,MATLAB提供的rand函数可以生成随机信号。

【例2-8】生成一组41点构成的连续随机信号和与之相应的随机序列。运行程序如下:

tn=0:40;
N=length(tn);
x=rand(1,N);
subplot(1,2,1),plot(tn,x,'k');
ylabel('x(t)');
subplot(1,2,2),stem(tn,x,'filled','k');
ylabel('x(n)');

运行结果如图2-8所示。

2.2.3 三角波函数

函数sawtooth可以产生锯齿波或三角波信号。

格式一:x=sawtooth(t)

功能:产生周期为2pi,振幅为1~1的锯齿波。在2pi的整数倍处值为1~1,这一段波形斜率为1/pi。

格式二:sawtooth(t,width)

功能:产生三角波,width在0到1之间。

【例2-9】产生周期为0.02的三角波。运行程序如下:

clear
Fs=10000;t=0:1/Fs:1;
x1=sawtooth(2pi50*t,0);
x2=sawtooth(2pi50*t,1);
subplot(2,1,1);
plot(t,x1);axis([0,0.2,-1,1]);
subplot(2,1,2);
plot(t,x2);axis([0,0.2,-1,1]);

运行程序如图2-9所示。

2.2.4 sinc函数
sinc的函数定义为:

sinc函数的调用格式为:

y=sinc(x)

【例2-10】sinc函数发生器示例。运行程序如下:

clear
t = (1:12)';
x= randn(size(t));
ts = linspace(-5,15,600)';
y = sinc(ts(:,ones(size(t))) - t(:,ones(size(ts)))')*x;
plot(t,x,'o',ts,y)
ylabel('x(n)');
xlabel('n');
grid on;

运行结果如图2-10所示。

2.2.5 线性调频函数
产生线性调频扫频信号函数chirp的调用格式如下:

y=chirp(t,f0,t1,f1)

功能:产生一个线性(频率随时间线性变化)信号,其时间轴设置由数组t定义。时刻0的瞬间频率为f0,时刻t1的瞬间频率为f1。默认情况,f0=0 Hz,t1=1,f1=100 Hz。

y=chirp(t,f0,t1,f1,'method')

功能:指定改变扫频的方法。可用的方法有'linear'(线性扫频)、'quadratic'(二次扫频)和'logarithmic'(对数扫频);默认时为'linear'。注意:对于对数扫频,必须有f1>f0。

y=chirp(t,f0,t1,f1,'method',phi)

功能:指定信号的初始相位为phi(单位为度),默认时phi=0。

y=chirp(t,f0,t1,f1,'quadratic',phi,'shape')

根据指定的方法在时间t上产生余弦扫频信号,f0为第一时刻的瞬时频率,f1为t1时刻的瞬时频率,f0和f1单位都为Hz。如果未指定,f0默认为e-6(对数扫频方法)或0(其他扫频方法),t1为1,f1为100 Hz。

扫频方法有linear(线性扫频)、quadratic(二次扫频)、logarithmic(对数扫频)。

phi允许指定一个初始相位(以°为单位),默认为0,如果想忽略此参数,直接设置后面的参数,可以指定为0或[]。

shape指定二次扫频方法的抛物线的形状是凹还是凸,值为concave或convex,如果此信号被忽略,则根据f0和f1的相对大小决定是凹还是凸。

【例2-11】chirp函数的实现。运行程序如下:

clear
t=0:0.01:2;
y=chirp(t,0,1,150);
plot(t,y);
axis([0,0.5,0,1])
ylabel('x(t)');
xlabel('t');
grid on;

运行结果如图2-11所示。

2.2.6 diric函数
功能:周期函数sinc发生器,其调用的格式如下:

y=diric(x,n)

【例2-12】产生sinc函数曲线与diric函数曲线。运行程序如下:

figure;clf;
t=-4pi:pi/20:4pi;
subplot(2,1,1);
plot(t,sinc(t));
title('Sinc');
grid on;
xlabel('t');
ylabel('sinc(t)');
subplot(2,1,2);
plot(t,diric(t,5));
title('Diric');
grid on;
xlabel('t');
ylabel('diric(t)');

运行结果如图2-12所示。

2.2.7 rectpuls函数
功能:产生非周期方波信号函数rectpuls,其调用格式如下:

y=rectpuls(t)

y=rectpuls(t,w),产生指定宽度为w的非周期方波

【例2-13】非周期方波信号函数rectpuls的实现。运行程序如下:

clear
t=-2:0.001:2;
y=rectpuls(t);
subplot(121)
plot(t,y);
axis([-2 2 -1 2]);
grid on;
xlabel('t');
ylabel('h(t)');
y=2*rectpuls(t,2);
subplot(122)
plot(t,y);grid on;
axis([-2 2 -1 3]);
grid on;
xlabel('t');
ylabel('h(t)');

运行结果如图2-13所示。

2.2.8 tripuls函数
功能:产生非周期三角波信号函数tripuls,调用格式如下:

y=tripuls(t)

y=tripuls(t,w)

y=tripuls(t,w,s):产生周期为w的非周期方波,斜率为s(-1<s<1)

【例2-14】非周期三角波信号的实现。运行程序如下:

clear
t=-3:0.001:3;
y=tripuls(t,4,0.5);
plot(t,y);grid on;
axis([-3 3 -1 2]);
grid on;
xlabel('t');
ylabel('h(t)');

运行程序结果如图2-14所示。

2.2.9 pulstran函数
功能:脉冲序列发生器函数pulstran,其调用格式如下:

y=pulstran(t,d,'func')

该函数基于一个名为func的连续函数并以之为一个周期,从而产生一串周期性的连续函数(func函数可自定义)。

该pulstran函数的横坐标范围由向量t指定,而向量d用于指定周期性的偏移量(即各个周期的中心点),这样这个func函数会被计算length(d)次,从而实现一个周期性脉冲信号的产生。函数pulstran的一般调用形式为:

y=pulstran(t,d,'func',p1,p2,…)

其中的p1,p2……为需要传送给func函数的额外输入参数值(除了变量t之外)。

【例2-15】脉冲序列发生器实现。运行程序如下:

clear
T=0:1/1E3:1;
D=0:1/4:1;
Y=pulstran(T,D,’rectpuls’,0.1);
subplot(121)
plot(T,Y);
xlabel('t');
ylabel('h(t)');
grid on;axis([0,1,-0.1,1.1]);
T=0:1/1E3:1;
D=0:1/3:1;
Y=pulstran(T,D,’tripuls’,0.2,1);
subplot(122)
plot(T,Y);
xlabel('t');
ylabel('h(t)');
grid on;axis([0,1,-0.1,1.1]);

运行结果如图2-15所示。

2.2.10 gauspuls函数
功能:产生高斯正弦脉冲信号函数gauspuls,调用格式如下:

yi = gauspuls(t,fc,bw)

yi = gauspuls(t,fc,bw,bwr)

[yi,yq] = gauspuls(...)

[yi,yq,ye] = gauspuls(...)

tc = gauspuls('cutoff',fc,bw,bwr,tpe)

【例2-16】高斯正弦脉冲信号函数的实现。运行程序如下:

clear
tc = gauspuls('cutoff',50e3,0.6,[],-40);
t = -tc : 1e-6 : tc;
yi = gauspuls(t,50e3,0.6);
plot(t,yi)
xlabel('t');
ylabel('h(t)');
grid on

运行结果如图2-16所示。

时间: 2024-10-03 19:52:10

《MATLAB信号处理超级学习手册》——2.2 信号的产生的相关文章

《MATLAB信号处理超级学习手册》——第2章 时间信号与系统 2.1 离散序列

第2章 时间信号与系统 一个离散时间信号是一个整数值变量n的函数,表示为x(n)或{x(n)}.尽管独立变量n不一定表示"时间"(例如,n可以表示温度或距离),但x(n)一般被认为是时间的函数.因为离散时间信号x(n)对于非整数值n是没有定义的. 离散时间信号的波形绘制在MATLAB中一般用stem函数.stem函数的基本用法和plot函数一样,它绘制的波形图的每个样本点上有一个小圆圈,默认是空心的.如果需要实心,需使用参数"fill"."filled&q

《MATLAB信号处理超级学习手册》——2.3 信号在MATLAB中的运算

2.3 信号在MATLAB中的运算 MATLAB信号处理超级学习手册本节利用MATLAB进行离散时间序列的基本运算,掌握基本的MATLAB函数的编写和调试方法,同时了解对连续时间信号的时域运算,加深对信号的时域运算的理解. 2.3.1 信号的时移.反折和尺度变换描离散序列的时域运算包括信号的相加.相乘,信号的时域变换包括信号的移位.反折.尺度变换等.在MATLAB中,离散序列的相加.相乘等运算是两个向量之间的运算,因此参加运算的两个序列向量必须具有相同的维数,否则应进行相应的处理. 离散序列的时

《MATLAB信号处理超级学习手册》——2.5 离散时间信号中的运算

2.5 离散时间信号中的运算 MATLAB信号处理超级学习手册2.5.1 离散时间系统响应离散时间LTI系统可用线性常系数差分方程来描述,即: 其中,a i(i=0,1,-,N)和b j(j=0,1,-,M)为实常数 MATLAB中函数filter可对式(2-24)的差分方程在指定时间范围内的输入序列所产生的响应进行求解.函数filter的语句格式为 y=filter(b,a,x) 其中,x为输入的离散序列:y为输出的离散序列,y的长度与x的长度一样:b与a分别为差分方程右端与左端的系数向量.

《MATLAB信号处理超级学习手册》——2.6 离散时间系统

2.6 离散时间系统 MATLAB信号处理超级学习手册 离散时间系统还可分成线性和非线性两种.同时具有叠加性和齐次性(均匀性)的系统,通常称为线性离散系统.当若干个输入信号同时作用于系统时,总的输出信号等于各个输入信号单独作用时所产生的输出信号之和,这个性质称为叠加性.齐次性是指当输入信号乘以某常数时,输出信号也相应地乘以同一常数. 不能同时满足叠加性和齐次性的系统称为非线性离散系统.如果离散系统中乘法器的系数不随时间变化,这种系统便称为时不变离散系统:否则就称为时变离散系统. 2.6.1 离散

《MATLAB信号处理超级学习手册》——2.7 本章小结

2.7 本章小结 MATLAB信号处理超级学习手册 时间信号和系统的理论是数字信号处理的理论基础.本章首先简单介绍了信号中的7种离散序列.然后通过方波函数等10种MATLAB函数举例介绍了信号的产生,并对信号的变换.运算.奇偶分解.微积分等MATLAB运算做了说明.最后,通过介绍连续时间系统分析和离散时间信号运算.离散时间系统的描述,为学习信号处理建立了必要的理论基础.

《MATLAB信号处理超级学习手册》——2.4 连续时间系统的时域分析

2.4 连续时间系统的时域分析 MATLAB信号处理超级学习手册2.4.1 连续时间系统求解连续时间线性非时变系统(LTI)可以用如下的线性常系数微分方程来描述: 系统的响应一般包括两个部分,即由当前输入所产生的响应(零状态响应)和由历史输入(初始状态)所产生的响应(零输入响应). 对于低阶系统,一般可以通过解析的方法得到响应.但是,对于高阶系统,手工计算就比较困难,这时MATLAB强大的计算功能就比较容易确定系统的各种响应,如冲激响应.阶跃.零状态响应.全响应等. 涉及到的MATLAB函数有:

《MATLAB信号处理超级学习手册》——1.4 本章小结

1.4 本章小结 MATLAB信号处理超级学习手册MATLAB 语言由于语法的简洁性.代码接近自然数学描述方式以及具有丰富的专业函数库等诸多优点,吸引了众多科学研究工作者,越来越成为科学研究.数值计算.建模仿真以及学术交流的事实标准. 本章主要介绍了MATLAB语言的8个特点,并举例说明了MATLAB语言的简洁.方便.然后从MATLAB用户界面.变量及赋值.绘图命令.MATLAB程序的结构流等四个方面说明MATLAB的基本操作.最后对于MATLAB中的重要内容M文件进行了简单介绍.

《MATLAB信号处理超级学习手册》——1.3 M文件

1.3 M文件 MATLAB信号处理超级学习手册创建M文件是MATLAB中的非常重要的内容.事实上,正是由于在MATLAB工具箱中存放着大量的M文件,使得MATLAB在应用起来显得简单.方便,且功能强大. 如果用户根据自己的需要,开发出适用于自己的M文件,不仅能使MATLAB更加贴近用户,而且能使MATLAB的功能得到扩展. M文件有两种形式:命令文件和函数文件.当用户要运行的命令较多时,如果直接在命令窗口中逐条输入和运行,有诸多不便.此时可通过编写命令文件来解决这个问题.另外,从前面的例中可以

《MATLAB信号处理超级学习手册》——1.2 MATLAB基本操作

1.2 MATLAB基本操作 MATLAB信号处理超级学习手册本节主要介绍MATLAB一些入门知识,包括MATLAB桌面和窗口,MATLAB命令格式.数据格式.数据文件和变量管理,MATLAB的变量,MATLAB的程序设计方法,MATLAB作图方法,在线帮助的使用和程序文件.目录的管理等. 1.2.1 MATLAB用户界面启动MATLAB,单击MATLAB图标,进入到用户界面,如图1-1所示. 进入到MATLAB命令窗(MATLAB Command Window),在命令窗内,可以输入命令.编程