基于Matlab的信号时域的描述及运算.docx
《基于Matlab的信号时域的描述及运算.docx》由会员分享,可在线阅读,更多相关《基于Matlab的信号时域的描述及运算.docx(21页珍藏版)》请在冰豆网上搜索。
基于Matlab的信号时域的描述及运算
实验一 基于Matlab的信号时域的描述及运算
实验目的:
通过利用MATLAB语言软件实现信号的描述和运算练习,熟悉掌握实现基本信号时域运算的方法。
实验内容:
1、对常见连续时间信号的描述及运算内容进行验证性操作练习,掌握用于实现正弦连续信号、方波信号、阶跃信号、白噪声、矩形脉冲等常见信号的基础程序方法,熟悉和掌握对连续信号进行移位、翻转、尺度变换等时域运算的程序方法。
2、对常见离散时间信号的描述及运算内容进行验证性操作练习,掌握用于实现正弦序列、周期方波序列、单位脉冲序列、单位阶跃序列、指数序列等常见信号的程序方法,熟悉和掌握对离散时间信号进行离散卷积、自相关函数、移位、翻转、尺度变换等时域运算的程序方法。
3、编程完成练习题。
需要完成的练习题(写出满足实现题目要求的MATLAB语言程序或命令)
1、结合后文准备内容中例1—3、在时间内,编程实现信号,并绘出结果图。
2、结合例1—9,在时间内,编程实现信号,并绘出结果图。
3、在时间内,编程实现信号,并绘出结果图。
4、结合例1—7,用tripluls函数生成右图所示的三角波,并进一步作如下信号变换,并绘出结果图。
参考【例1-11】
1)
2)
5、使用下面的信号合成公式,看看合成的信号是什么类型,并分析随着加入的谐波增加,信号波形有什么变化?
参考程序:
t=-8:
0.01:
8;
w=input('方波的频率w=');
A=input('幅值A=');
n=input('需要的谐波n=');
y=A/2;
fork=1:
n
y=y+(-1)^(k-1)*cos((2*k-1)*w*t)*2*A/(pi*(2*k-1));
end
plot(t,y),grid
5、使用MATLAB产生下列离散序列并作出一个图形,设
(1),。
(结合例2—5)
(2),,。
(结合例2—4)
(3)。
6、已知两信号,,(结合表2—1)
(1)求两信号的卷积运算;
(2)求出信号a的自相关函数;
(3)将信号b进行翻转;(4)求两信号的互相关函数;
实验报告要求:
1、简要介绍说明实验中用于实现常见信号的基本命令。
2、简要介绍说明实验中用于实现时域运算的程序方法基本命令。
3、独立完成实验练习题,写出满足实现题目要求的MATLAB语言程序或命令,给出相对应的结果图。
准备知识
一、常用连续时间信号
1、正弦信号
A*cos(w0*t+phi)产生一个频率为w0,相位为phi的余弦信号。
A*sin(w0*t+phi)产生一个频率为w0,相位为phi的正弦信号。
[例1—1]
在时间范围内产生一个幅度为2,频率为4Hz,初相位为的正弦信号。
clearall;
clc
%正弦信号x(t)=A*sin(w0*t+phi)
A=2;%信号幅度
f0=4;%信号频率
phi=pi/6;%信号初相位
w0=2*pi*f0;%信号角频率
t=0:
0.01:
1;%连续时间离散化
x=A*sin(w0*t+phi);%求出正弦信号
plot(t,x);%画出信号波形
ylabel('x(t)');xlabel('Time(s)');
title('sinusoidalsignal');
图1.1正弦信号
2、周期方波信号
square(w0*t)产生基本频率为w0(周期为的周期方波。
square(w0*t,DUTY)产生基本频率为w0(周期为、占空比DUTY=的周期方波。
为一个周期中信号为正的时间长度。
当,DUTY=50,square(w0*t,50)=square(w0*t)。
[例1—2]
在时间范围内产生一个幅度为1,基频为3Hz,占空比为20%的周期方波。
A=1;%幅度
f0=3;
t=0:
0.001:
2.5;%连续时间离散化(产生时间点),
w0=2*f0*pi;
duty=20;%占空比为20%
y=A*square(w0*t,duty);
plot(t,y);
axis([0,2.5,-1.5,1.5]);
ylabel('x(t)');xlabel('Time(s)');
title('squarewave')
图1.2周期方波信号
3、单位阶跃信号
[例1—3]
在时间范围内产生阶跃信号2。
t=-2:
0.02:
6;
x=2*(t>=0);
stairs(t,x);-1
axis([-2,6,0,2.5]);
ylabel('x(t)');xlabel('Time(s)');
title('stepsignal');
图1.3阶跃信号
4、单位冲激信号
[例1—4]
在时间范围内产生一个冲激信号。
t=-2:
0.02:
6;
x=2*((t-2)==0);
stairs(t,x);
axis([-2,6,0,2.5]);
ylabel('x(t)');xlabel('Time(s)');
title('impulsesignal');
图1.4冲激信号
5、矩形脉冲信号
rectpulse(t)产生高度为1、宽度为1、关于t=0对称的矩形脉冲信号。
rectpulse(t,w)产生高度为1、宽度为w、关于t=0对称的矩形脉冲信号。
rectpulse(t-t0,w)产生高度为1、宽度为w、关于t=t0对称的矩形脉冲信号。
[例1—5]
在时间范围内产生一个高度为1、宽度为3、延时2秒的矩形脉冲信号。
t=-2:
0.02:
6;
y=rectpuls(t-2,3);%对称中心在t=2处
plot(t,y);
axis([-2,6.5,0,1.5]);
ylabel('x(t)');xlabel('Time(s)');
title('rectangularpulse')
图1.5矩形脉冲信号
6、取样信号
取样函数信号定义为:
它是一个以为周期,幅度随但单调衰减的振荡信号。
它在信号分析和通信理论中有着广泛应用,与它变化规律非常相似的有辛格函数,其定义为
所以在MATLAB中,可以使用命令得到取样函数信号。
[例1—6]
在时间范围内产生取样信号。
t=-10:
.01:
10;
y=sinc(t/pi);%sa(t)=sin(t)/t
plot(t,y);
axis([-10,10,-1,1.5]);
ylabel('x(t)');xlabel('Time(s)');
title('samplefunction')
图1.6取样函数信号
7、三角波信号
tripuls(t)产生高度为1,底边宽度为1、关于t=0位置对称的等腰三角波信号。
tripuls(t,w)产生高度为1,底边宽度为w、关于t=0位置对称的等腰三角波信号。
tripuls(t,w,s)产生高度为1,底边宽度为w、底边中心t=0、斜度为s()的三角波信号。
s=0产生等腰三角波。
[例1—7]
在时间范围内产生一个高度为2、宽度为2,底边中心在2.5、斜度为的三角波信号。
t=-5:
0.01:
5;
x=2*tripuls(t-2.5,2,-1);
plot(t,x);
ylabel('x(t)');xlabel('Time(s)');
title('trianglesignal')
图1.7取样函数信号
8、噪声信号
rand产生在[0,1]区间均匀分布的白噪声。
randn产生高斯分布(均值为0,协方差为1)的白噪声。
[例1—8]
在时间范围内产生101个均匀分布的白噪声和高斯分布的白噪声。
t=0:
0.01:
1;
subplot(2,1,1);
plot(t,rand(1,length(t)));
ylabel('x(t)');
title('averagedistributionalnoise');
subplot(2,1,2);
plot(t,randn(1,length(t)));
ylabel('x(t)');xlabel('Time(s)');
title('guassdistributionalnoise');
图1.8白噪声信号
二、连续时间信号的常用运算
[例1—9]
在时间内生成幅度按指数衰减的正弦信号=。
A=5;f0=4;phi=0;
w0=2*pi*f0;
a=6;
t=0:
0.001:
1;
x=A*sin(w0*t+phi).*exp(-a*t);%注意这里是点乘
plot(t,x);
ylabel('x(t)');xlabel('Time(s)');
图1.9
[例1—10]
使用命令tripulse(t)生成一个三角形脉冲,设。
(1)计算该信号的微分并且画出波形。
(2)计算该信号在内的记分值。
(3)计算该信号的积分并画出波形
解:
1)使用diff函数计算信号的微分并画出波形,结果见图1-10(a)
t=-2:
0.02:
2;%共有201个数据点
x=tripuls(t);%产生单位高度、底边宽度为1、对称中心在t=0的等腰三角形
y=diff(x);%共有200个数据点
n=length(t)-1;
subplot(2,1,1);plot(t,x);
ylabel('x(t)');xlabel('Time(s)');
subplot(2,1,2);plot(t(1:
n),y,'r');
ylabel('dx(t)/dt');xlabel('Time(s)');
【例1-11】信号的平移
使用命令tripulse(t)生成一个三角形脉冲,其宽度为2,关于中心t=0对称,利用subs指令实现信号向左平移2个单位。
symst;
f=sym('tripuls(t,2,0)')
f1=subs(f,t,t+2);
t=-4:
0.001:
4;
subplot(211)
ezplot(f,[-8,8]),grid
subplot(212)
ezplot(f1,[-8,8]),grid
title('信号的平移')
思考:
若将上面的f1=subs(f,t,t+2)换成f1=subs(f,t,-2*t+2),结果会怎样?
2)函数quad和quad8都是数值积分函数。
使用格式:
Q=quad(‘function_name’,a,b);
Q为定积分返回值,function-name为函数名,a和b指定定积分区间。
调用函数quad积分:
z=quad(‘tripuls’,-2,2)
返回:
z=
1.5000
3)调用函数quad积分:
(结果见图1—10(b))
t=-2:
0.02:
2;
x=tripuls(t,2,0);
foru=1:
length(t);
int_x(u)=quad('tripuls',-2,t(u));
end
subplot(2,1,1);plot(t,x);ylabel('x(t)');
subplot(2,1,2);plot(t,int_x);
ylabel('integralofx(t)');xlabel('time(s)');
title('showtheprocessofintegral');
图1.10(a)图1.10(b)
[例1—12]
计算信号在时间内的能量。
信号的能量:
信号的功率:
解:
首先做一个函数powert.m计算信号的瞬时能量
functionf=powert(t)