数字信号处理的对象,是对模拟信号采样、量化后形成的数字信号,在一般的书中,列举的信号包括,单位冲击序列、单位阶跃序列、矩形序列、正弦序列、指(复)数序列。下面演示如何通过matlab生成这些序列。
首先要考虑的是,在课本的学习中,我们是通过“函数”的角度认识他们的,即给出它们的表达式;而在计算机中,能够处理的是他们的值。(这里并不考虑matlab的符号代数系统)。所以,要想完整的表示序列,需要两块存储空间:第一块存自变量,第二块存函数值。如果仅仅存了函数值,而不考虑自变量,是没有意义的。
下面给出这些基本序列的matlab程序:
%% 生成数字信号处理常见的几种基本序列
clear all;
close all;
clc;
nStart = -5;
nEnd = 10;
nIndex = nStart:nEnd;
%% 单位冲击函数
delta = [nIndex == 0];
subplot(5,1,1);
stem(nIndex,delta);
%% 单位阶跃函数
step = [nIndex>=0];
subplot(5,1,2);
stem(nIndex,step);
%% 矩形序列
nLen = 5;
nLeft = 0;
nRight = nLeft + nLen;
rect = zeros(1,length(nIndex));
rect(nLeft-nStart+1:nRight-nStart) = ones(1,nLen);
subplot(5,1,3);
stem(nIndex,rect);
%% 正弦序列
t = linspace(nStart,nEnd,100);
omega = 0.5;
y = sin(omega*t);
subplot(5,1,4);
stem(t,y);
%% 指数序列
alpla = -0.5;
y = exp(alpla*t);
subplot(5,1,5);
stem(t,y);
它们的结果如图: