目录
- 1. 写在前面
- 2. 连续信号和离散信号
- 2.1连续信号
- 2.2 离散信号
 
- 3. 常用信号的产生
- 3.1 单位脉冲序列
- 3.2 单位阶跃序列
- 3.3 指数函数
- 3.4 正弦信号和余弦信号
- 3.5 sinc函数
- 3.6 矩形脉冲信号
 
- 4. 信号卷积
- 5. 完整代码
1. 写在前面
为了更好的理解通信原理系列文章,在此补充数字信号处理的部分内容。
2. 连续信号和离散信号
2.1连续信号
连续时间信号,是指自变量的取值范围是连续的。但是从严格意义上来说,MATLAB并不能处理连续信号,而是用连续信号在等时间间隔点的样值来近似地表示连续信号的,当取样时间间隔足够小时,这些离散的样值就能较好地近似出连续信号。
 连续信号的示例
 
%% 连续信号
t = -5:0.1:5;                       % 时间变量
y = sin(t);                         % 信号
figure(1);                          % 绘制第1幅图
plot(t,y,'LineWidth',2);            % 绘制信号
2.2 离散信号
自变量的取值范围是不连续的信号。
 离散信号示例
 
%% 离散信号
k = -2:5;                           % 产生-2到5间隔为1的行向量
sig = [1 2 -4 4 3 5 -2 3];          % 信号
figure(2);                          % 绘制第2幅图
stem(k,sig,'LineWidth',2);          % 绘制信号
3. 常用信号的产生
3.1 单位脉冲序列
单位脉冲序列是最原点处为1,其余处为0的信号。
 
% 单位冲激函数
t1=-5:5;                            % 时间变量,-5到5间隔为1的行向量
y1=(t1==0);                         % t1中等于0的数对应的序号在x的对应位置的数为1,其余为0
figure(3);                          % 绘制第3幅图
stem(t1,y1,'LineWidth',2);          % 单位冲激序列
3.2 单位阶跃序列
单位阶跃序列是大于等于0处值为1,其余为0的信号。
 
% 单位阶跃函数
t2=-5:5;                            % 时间变量,-5到5间隔为1的行向量
y2=(t2>=0);                         % t2中大于等于0的数对应的序号在x的对应位置的数为1,其余为0
figure(4);                          % 绘制第4幅图
stem(t2,y2,'LineWidth',2);          % 单位阶跃序列
hold on;                            % 允许后续的图像在当前窗口绘制
plot(t2,y2,'LineWidth',2);          % 单位阶跃函数
hold off;                           % 不允许后续的图像在当前窗口绘制
3.3 指数函数
指数函数示例
 
figure(5);                          % 绘制第5幅图
t3=-3:0.5:3;                        % 时间变量,-3到3间隔为0.5的行向量
y3=exp(-t3);                        % 指数函数
plot(t3,y3,'LineWidth',2);          % 绘制连续指数函数
hold on;                            % 允许后续的图像在当前窗口绘制
stem(t3,y3,'LineWidth',2);          % 离散指数序列
hold off;                           % 不允许后续的图像在当前窗口绘制
3.4 正弦信号和余弦信号
正弦信号和余弦信号示例
 
% 正弦波和余弦波
t4=0:0.01:2*pi;                     % 时间变量,0到2*pi间隔为0.01的行向量
y4=sin(2*t4);                       % 正弦信号
y5=cos(2*t4);                       % 余弦信号
figure(6);                          % 绘制第6幅图
plot(t4,y4,'-b','LineWidth',2);     % 绘制正弦信号
hold on;                            % 允许后续的图像在当前窗口绘制
plot(t4,y5,'-r','LineWidth',2);     % 绘制余弦信号
legend('正弦信号','余弦信号');      % 图例
hold off;                           % 不允许后续的图像在当前窗口绘制
3.5 sinc函数
sinc函数示例
 
% sinc函数
t5=linspace(-10,10,1024);           % 产生-10到10,间隔为20/(1024-1)的行向量
figure(7);                          % 绘制第7幅图
sicf=sinc(t5);                      % sinc函数
plot(t5,sicf,'LineWidth',2);        % 绘制sinc信号
3.6 矩形脉冲信号
矩形脉冲信号示例
 
% 矩形脉冲信号
t6=-2:0.01:2;                       % 时间变量,-2到2间隔为0.01的行向量
y6=rectpuls(t6);                    % 矩形脉冲信号
figure(8);                          % 绘制第8幅图
plot(t6,y6,'LineWidth',2);          % 绘制矩形脉冲信号
4. 信号卷积
卷积运算是信号运算中重要的运算,用conv函数实现。
 
%% 信号卷积
x=[4,3,2,1];                        % 输入信号
h=[2,5,1];                          % 单位脉冲响应函数
y=conv(x,h);                        % 输出信号
figure(9);                          % 绘制第3幅图
subplot(1,3,1);                     % 将窗口分割成1*3的,当前是第1个子图
stem(x,'LineWidth',2);              % 绘制输入信号
title('输入信号x');                 % 标题
subplot(1,3,2);                     % 将窗口分割成1*3的,当前是第2个子图
stem(h,'LineWidth',2);              % 绘制单位脉冲响应函数
title('单位脉冲响应函数h');         % 标题
subplot(1,3,3);                     % 将窗口分割成1*3的,当前是第3个子图
stem(y,'LineWidth',2);              % 绘制输出信号
title('输出信号y');                 % 标题
5. 完整代码
clear all;                          % 清除所有变量
close all;                          % 关闭窗口
clc;                                % 清屏
%% 连续信号
t = -5:0.1:5;                       % 时间变量
y = sin(t);                         % 信号
figure(1);                          % 绘制第1幅图
plot(t,y,'LineWidth',2);            % 绘制信号
%% 离散信号
k = -2:5;                           % 产生-2到5间隔为1的行向量
sig = [1 2 -4 4 3 5 -2 3];          % 信号
figure(2);                          % 绘制第2幅图
stem(k,sig,'LineWidth',2);          % 绘制信号
%% 常用信号
% 单位冲激函数
t1=-5:5;                            % 时间变量,-5到5间隔为1的行向量
y1=(t1==0);                         % t1中等于0的数对应的序号在x的对应位置的数为1,其余为0
figure(3);                          % 绘制第3幅图
stem(t1,y1,'LineWidth',2);          % 单位冲激序列
% 单位阶跃函数
t2=-5:5;                            % 时间变量,-5到5间隔为1的行向量
y2=(t2>=0);                         % t2中大于等于0的数对应的序号在x的对应位置的数为1,其余为0
figure(4);                          % 绘制第4幅图
stem(t2,y2,'LineWidth',2);          % 单位阶跃序列
hold on;                            % 允许后续的图像在当前窗口绘制
plot(t2,y2,'LineWidth',2);          % 单位阶跃函数
hold off;                           % 不允许后续的图像在当前窗口绘制
% 指数函数
figure(5);                          % 绘制第5幅图
t3=-3:0.5:3;                        % 时间变量,-3到3间隔为0.5的行向量
y3=exp(-t3);                        % 指数函数
plot(t3,y3,'LineWidth',2);          % 绘制连续指数函数
hold on;                            % 允许后续的图像在当前窗口绘制
stem(t3,y3,'LineWidth',2);          % 离散指数序列
hold off;                           % 不允许后续的图像在当前窗口绘制
% 正弦波和余弦波
t4=0:0.01:2*pi;                     % 时间变量,0到2*pi间隔为0.01的行向量
y4=sin(2*t4);                       % 正弦信号
y5=cos(2*t4);                       % 余弦信号
figure(6);                          % 绘制第6幅图
plot(t4,y4,'-b','LineWidth',2);     % 绘制正弦信号
hold on;                            % 允许后续的图像在当前窗口绘制
plot(t4,y5,'-r','LineWidth',2);     % 绘制余弦信号
legend('正弦信号','余弦信号');      % 图例
hold off;                           % 不允许后续的图像在当前窗口绘制
% sinc函数
t5=linspace(-10,10,1024);           % 产生-10到10,间隔为20/(1024-1)的行向量
figure(7);                          % 绘制第7幅图
sicf=sinc(t5);                      % sinc函数
plot(t5,sicf,'LineWidth',2);        % 绘制sinc信号
% 矩形脉冲信号
t6=-2:0.01:2;                       % 时间变量,-2到2间隔为0.01的行向量
y6=rectpuls(t6);                    % 矩形脉冲信号
figure(8);                          % 绘制第8幅图
plot(t6,y6,'LineWidth',2);          % 绘制矩形脉冲信号
%% 信号卷积
x=[4,3,2,1];                        % 输入信号
h=[2,5,1];                          % 单位脉冲响应函数
y=conv(x,h);                        % 输出信号
figure(9);                          % 绘制第3幅图
subplot(1,3,1);                     % 将窗口分割成1*3的,当前是第1个子图
stem(x,'LineWidth',2);              % 绘制输入信号
title('输入信号x');                 % 标题
subplot(1,3,2);                     % 将窗口分割成1*3的,当前是第2个子图
stem(h,'LineWidth',2);              % 绘制单位脉冲响应函数
title('单位脉冲响应函数h');         % 标题
subplot(1,3,3);                     % 将窗口分割成1*3的,当前是第3个子图
stem(y,'LineWidth',2);              % 绘制输出信号
title('输出信号y');                 % 标题



















