数字信号处理及MATLAB实践
第一章 信号、连续时间周期信号的傅里叶级数和频谱分析
前言
本章主要内容包括:
- 信号的时域分析——波形的产生和信号的基本运算及MATLAB实践;
- 连续时间周期信号的傅里叶级数及MATLAB实践;
- 连续时间周期信号的频谱分析及MATLAB时间;
1.1 信号的时域分析—波形的产生和信号的基本运算及MATLAB实践
1) 单位脉冲序列、单位阶跃序列、矩形序列和指数序列的产生 2) 利用MATLAB画图函数显示信号波形的方法 3) 离散时间信号的反折、时间移位和尺度变换的运算
信号的表示及可视化
单位脉冲序列
单位阶跃序列
矩形序列
指数序列
实例
实例中所用的MATLAB函数
产生占空比duty=1/2的单位周期方波(square方波函数组成)
代码如下(示例):
function x = squ_timefun( t, T )
% 占空比 duty=1/2的单位周期方波 squate方波函数组成
% UNTITLED Summary of this function goes here
% t是时间数组
% T是周期
T = 5;
t = -2*T : 0.01 : 2*T;
duty = 50; %占空比:信号为正的区域在一个周期内所占的百分比
x = square(t, duty);
subplot(2,2,1);
plot(t, x)
title('连续时间函数—周期方波脉冲');
end
产生周期T=4的三角波脉冲,其中t是时间数组,T是周期
代码如下(示例):
function x = sjb_time( t,T )
%SJB_TIME Summary of this function goes here
% t是时间数组
% T是周期
% 主要由sawtooth函数组成
T = 4;
t = -2.5*T :0.01: 2.5*T;
x = sawtooth(t, 0.5);
subplot(3,3,1);
plot(t,x);
title('周期三角波脉冲,T=4');
axis([-10,10, -1.2,1.2]);
end
产生阶跃序列
代码如下(示例):
function [ output_args ] = Untitled( input_args )
% 产生阶跃序列
T = 5;
t = -2*T :3*T;%默认step=1
x = 1/2 + 1/2 .*sign(t); %sign(n):n<0,值为1;n>0,值为1; n=0, 值为0
stem(t,x);
title('单位阶跃序列')
End
产生周期矩形脉冲序列
代码如下(示例):
function [ output_args ] = rect2_time( input_args )
% 产生周期矩形脉冲序列
% 利用zeros ones函数产生周期T=5 脉宽tao=1的单位举行脉冲序列
T = 5;
tao = T/5;
t = (-T-2*tao) :0.01: (T+2*tao);
y = zeros(size(t));
ii = find(t >= -tao/2 & t <= tao/2);
y(ii) = ones(size(ii));
iii = find(t > -T-tao & t <= -T);
y(iii) = ones(size(iii));
i = find(t >= T & t < T+tao);
y(i) = ones(size(i));
subplot(2,2,1);
plot(t,y);
end
单边序列反折后生成双边序列
代码如下(示例):
function [ output_args ] = fzh_time( input_args )
% 单边序列反折后组成双边序列
n = 0:4;
a = [5 4 3 2 1];
subplot(2,2,1);
stem(n,a);
title('原序列')
b = fliplr(a); %数组操作函数,以数组垂直中线为对称轴,交换左右对称位置上的数组元素
k = -4:4;
c = [b, a(2:end)];
subplot(2,2,2);
stem(k,c);
title('反折后的序列叠加原序列');
end
待续
|