实验报告
通信工程 1101
学号:*********
***** *
实验2 用MATLAB进行信号频谱分析
一、实验目的
㈠ 初步掌握MATLAB产生常用离散时间信号的编程方法。
㈡ 学习编写简单的FFT算法程序,对离散信号进行幅频谱分析。
㈢ 观察离散时间信号频谱的特点。
二、实验原理
㈠ 常用的离散时间信号
在 MATLAB语言主要是研究离散信号的。常用的离散信号有:
1.单位取样序列
2.单位阶跃序列
3.实指数序列
4.复指数序列
5.正(余)弦序列
6.周期序列
㈡ 离散信号的产生
离散信号的图形显示使用stem指令。
在 MATLAB中的信号处理工具箱中,主要提供的信号是离散信号。
由于MATLAB对下标的约定为从1开始递增,例如x=[5,4,3,2,1,0],表示x(1)=5,x(2)=4,X(3)=3…
因此要表示一个下标不由1开始的数组x(n),一般应采用两个矢量,如
n=[-3,-2,-1,0,l,2,3,4,5];
x=[1,-l,3,2,0,4,5,2,1];
这表示了一个含9个采样点的矢量:X(n)={x(-3),x(-2),x(-1),x(0),x(1),x(2),x(3),x(4),x(5)}。
1.单位取样序列
这一函数实现的方法有二:
方法一:可利用MATLAB的zeros函数。
x=zeros(1,N); %建立一个一行N列的全零数组
x(1)=1; %对X(1)赋1
方法二:可借助于关系操作符实现
n=1:N;
x=[n==1]; %n等于1时逻辑关系式结果为真,x=1;n不等于1时为假,x=0
如要产生
则可采用MATLAB实现:
n=n1:n2;
x=[(n-n0)==0];%n=n0时逻辑关系式结果为真,x=1;n≠n0时为假,x=0
2.单位阶跃序列
这一函数可利用MATLAB的ones函数实现:
x=ones(1,N);
还可借助于关系操作符“>=”来实现。如要产生在n1≤n0≤n2上的单位阶跃序列
则可采用MATLAB实现:
用subplot函数 n=n1:n2;
x=[(n-n0)>=0]; %n-n0≥0为真,x=1;n-n0<0时为假,x=0
3.实指数序列
采用MATLAB实现:
n=0:N-l;
x=a.^n;
4.复指数序列
采用MATLAB实现:
n=0:N-1;
x=exp((lu+j*w0)*n);
5.正(余)弦序列
采用MATLAB实现:
n=0:N-l;
x=cos(w0*n+Q);
6.随机序列
MATLAB中提供了两类(伪)随机信号:
rand(1,N)产生[0,1)上均匀分布的随机矢量;
randn(1,N)产生均值为0,方差为1的高斯随机序列,也就是白噪声序列。其它分布的随机数可通过上述随机数的变换而产生。
7.周期序列
例如,设t1表示T序列中一个周期的序列,要产生4个周期的T序列,用MATLAB实现:
T=[t1 t1 t1 t1];
例1:编写MATLAB程序来产生下列基本脉冲序列。
(1)单位脉冲序列:起点no,终点nf,在ns处有一单位脉冲(no≤ns≤nf)。
(2)单位阶跃序列: 起点no,终点nf,在ns前为0,在ns处及以后为l(no≤ns≤nf)。
(3)实数指数序列:
(4)复数指数序列:
其MATLAB程序及结果如下,运行结果如图7-3-1所示。
n0=0;nf=10;ns=3;
n1=n0:nf;x1=[(n1-ns)==0]; %单位脉冲序列
n2=n0:nf;x2=[(n2-ns)>=0]; %单位阶跃序列
n3=n0:nf;x3=(0.75).^n3; %实数指数序列
n4=n0:nf;x4=exp((-0.2+0.7j)*n4); %复数指数序列
subplot(2,2,1),stem(n1,x1);
subplot(2,2,2),stem(n2,x2);
subplot(2,2,3),stem(n3,x3);
subplot(4,2,6),stem(n4,real(x4)); %注意subplot的输入变元
subplot(4,2,8),stem(n4,imag(x4));
图7-3-1 例1 基本脉冲序列
例2:一个连续的锯齿波信号频率为1Hz,振幅值幅度为1V,在窗口上显示两个周期的信号波形,对它进行32点采样获得离散信号,试显示原信号和其采样获得离散信号波形。(见图7-3-2)
f=1;Um=1;nt=2; %输入信号频率、振幅和显示周期个数
N=32;T=nt/f; %N为采样点数,T为窗口显示时间
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论