数字信号处理基础(一):常用信号产生

1.连续信号和离散信号

1.1 连续信号

连续时间信号,是指自变量的取值范围是连续的。但是从严格意义上来说,MATLAB并不能处理连续信号,而是用连续信号在等时间间隔点的样值来近似地表示连续信号的,当取样时间间隔足够小时,这些离散的样值就能较好地近似出连续信号。

连续信号的示例

1 %% 连续信号
2 t = -5:0.1:5;                       % 时间变量
3 y = sin(t);                         % 信号
4 figure(1);                          % 绘制第1幅图
5 plot(t,y,'LineWidth',2);            % 绘制信号

 

1.2 离散信号

自变量的取值范围是不连续的信号。
离散信号示例

1 %% 离散信号
2 k = -2:5;                           % 产生-2到5间隔为1的行向量
3 sig = [1 2 -4 4 3 5 -2 3];          % 信号
4 figure(2);                          % 绘制第2幅图
5 stem(k,sig,'LineWidth',2);          % 绘制信号

2常用信号的产生

2.1 单位脉冲序列

单位脉冲序列是最原点处为1,其余处为0的信号。

1 % 单位冲激函数
2 t1=-5:5;                            % 时间变量,-5到5间隔为1的行向量
3 y1=(t1==0);                         % t1中等于0的数对应的序号在x的对应位置的数为1,其余为0
4 figure(3);                          % 绘制第3幅图
5 stem(t1,y1,'LineWidth',2);          % 单位冲激序列

 

 

2.2 单位脉冲序列

单位阶跃序列是大于等于0处值为1,其余为0的信号。

1 % 单位阶跃函数
2 t2=-5:5;                            % 时间变量,-5到5间隔为1的行向量
3 y2=(t2>=0);                         % t2中大于等于0的数对应的序号在x的对应位置的数为1,其余为0
4 figure(4);                          % 绘制第4幅图
5 stem(t2,y2,'LineWidth',2);          % 单位阶跃序列
6 hold on;                            % 允许后续的图像在当前窗口绘制
7 plot(t2,y2,'LineWidth',2);          % 单位阶跃函数
8 hold off;                           % 不允许后续的图像在当前窗口绘制

2.3 指数函数

指数函数示例

 

1 figure(5);                          % 绘制第5幅图
2 t3=-3:0.5:3;                        % 时间变量,-3到3间隔为0.5的行向量
3 y3=exp(-t3);                        % 指数函数
4 plot(t3,y3,'LineWidth',2);          % 绘制连续指数函数
5 hold on;                            % 允许后续的图像在当前窗口绘制
6 stem(t3,y3,'LineWidth',2);          % 离散指数序列
7 hold off;                           % 不允许后续的图像在当前窗口绘制

2.4 正弦信号和余弦信号

正弦信号和余弦信号示例

复制代码
 1 % 正弦波和余弦波
 2 t4=0:0.01:2*pi;                     % 时间变量,0到2*pi间隔为0.01的行向量
 3 y4=sin(2*t4);                       % 正弦信号
 4 y5=cos(2*t4);                       % 余弦信号
 5 figure(6);                          % 绘制第6幅图
 6 plot(t4,y4,'-b','LineWidth',2);     % 绘制正弦信号
 7 hold on;                            % 允许后续的图像在当前窗口绘制
 8 plot(t4,y5,'-r','LineWidth',2);     % 绘制余弦信号
 9 legend('正弦信号','余弦信号');      % 图例
10 hold off;                           % 不允许后续的图像在当前窗口绘制
复制代码

2.5 sinc函数

sinc函数示例

1 % sinc函数
2 t5=linspace(-10,10,1024);           % 产生-10到10,间隔为20/(1024-1)的行向量
3 figure(7);                          % 绘制第7幅图
4 sicf=sinc(t5);                      % sinc函数
5 plot(t5,sicf,'LineWidth',2);        % 绘制sinc信号

2.6 矩形脉冲信号

矩形脉冲信号示例

 

1 % 矩形脉冲信号
2 t6=-2:0.01:2;                       % 时间变量,-2到2间隔为0.01的行向量
3 y6=rectpuls(t6);                    % 矩形脉冲信号
4 figure(8);                          % 绘制第8幅图
5 plot(t6,y6,'LineWidth',2);          % 绘制矩形脉冲信号

3. 信号卷积

卷积运算是信号运算中重要的运算,用conv函数实现。

复制代码
 1 %% 信号卷积
 2 x=[4,3,2,1];                        % 输入信号
 3 h=[2,5,1];                          % 单位脉冲响应函数
 4 y=conv(x,h);                        % 输出信号
 5 figure(9);                          % 绘制第3幅图
 6 subplot(1,3,1);                     % 将窗口分割成1*3的,当前是第1个子图
 7 stem(x,'LineWidth',2);              % 绘制输入信号
 8 title('输入信号x');                 % 标题
 9 subplot(1,3,2);                     % 将窗口分割成1*3的,当前是第2个子图
10 stem(h,'LineWidth',2);              % 绘制单位脉冲响应函数
11 title('单位脉冲响应函数h');         % 标题
12 subplot(1,3,3);                     % 将窗口分割成1*3的,当前是第3个子图
13 stem(y,'LineWidth',2);              % 绘制输出信号
14 title('输出信号y');                 % 标题
复制代码

4. 完整代码

 

复制代码
 1 clear all;                          % 清除所有变量
 2 close all;                          % 关闭窗口
 3 clc;                                % 清屏
 4 %% 连续信号
 5 t = -5:0.1:5;                       % 时间变量
 6 y = sin(t);                         % 信号
 7 figure(1);                          % 绘制第1幅图
 8 plot(t,y,'LineWidth',2);            % 绘制信号
 9 
10 %% 离散信号
11 k = -2:5;                           % 产生-2到5间隔为1的行向量
12 sig = [1 2 -4 4 3 5 -2 3];          % 信号
13 figure(2);                          % 绘制第2幅图
14 stem(k,sig,'LineWidth',2);          % 绘制信号
15 
16 %% 常用信号
17 % 单位冲激函数
18 t1=-5:5;                            % 时间变量,-5到5间隔为1的行向量
19 y1=(t1==0);                         % t1中等于0的数对应的序号在x的对应位置的数为1,其余为0
20 figure(3);                          % 绘制第3幅图
21 stem(t1,y1,'LineWidth',2);          % 单位冲激序列
22 
23 % 单位阶跃函数
24 t2=-5:5;                            % 时间变量,-5到5间隔为1的行向量
25 y2=(t2>=0);                         % t2中大于等于0的数对应的序号在x的对应位置的数为1,其余为0
26 figure(4);                          % 绘制第4幅图
27 stem(t2,y2,'LineWidth',2);          % 单位阶跃序列
28 hold on;                            % 允许后续的图像在当前窗口绘制
29 plot(t2,y2,'LineWidth',2);          % 单位阶跃函数
30 hold off;                           % 不允许后续的图像在当前窗口绘制
31 
32 % 指数函数
33 figure(5);                          % 绘制第5幅图
34 t3=-3:0.5:3;                        % 时间变量,-3到3间隔为0.5的行向量
35 y3=exp(-t3);                        % 指数函数
36 plot(t3,y3,'LineWidth',2);          % 绘制连续指数函数
37 hold on;                            % 允许后续的图像在当前窗口绘制
38 stem(t3,y3,'LineWidth',2);          % 离散指数序列
39 hold off;                           % 不允许后续的图像在当前窗口绘制
40 
41 % 正弦波和余弦波
42 t4=0:0.01:2*pi;                     % 时间变量,0到2*pi间隔为0.01的行向量
43 y4=sin(2*t4);                       % 正弦信号
44 y5=cos(2*t4);                       % 余弦信号
45 figure(6);                          % 绘制第6幅图
46 plot(t4,y4,'-b','LineWidth',2);     % 绘制正弦信号
47 hold on;                            % 允许后续的图像在当前窗口绘制
48 plot(t4,y5,'-r','LineWidth',2);     % 绘制余弦信号
49 legend('正弦信号','余弦信号');      % 图例
50 hold off;                           % 不允许后续的图像在当前窗口绘制
51 
52 % sinc函数
53 t5=linspace(-10,10,1024);           % 产生-10到10,间隔为20/(1024-1)的行向量
54 figure(7);                          % 绘制第7幅图
55 sicf=sinc(t5);                      % sinc函数
56 plot(t5,sicf,'LineWidth',2);        % 绘制sinc信号
57 
58 % 矩形脉冲信号
59 t6=-2:0.01:2;                       % 时间变量,-2到2间隔为0.01的行向量
60 y6=rectpuls(t6);                    % 矩形脉冲信号
61 figure(8);                          % 绘制第8幅图
62 plot(t6,y6,'LineWidth',2);          % 绘制矩形脉冲信号
63 
64 %% 信号卷积
65 x=[4,3,2,1];                        % 输入信号
66 h=[2,5,1];                          % 单位脉冲响应函数
67 y=conv(x,h);                        % 输出信号
68 figure(9);                          % 绘制第3幅图
69 subplot(1,3,1);                     % 将窗口分割成1*3的,当前是第1个子图
70 stem(x,'LineWidth',2);              % 绘制输入信号
71 title('输入信号x');                 % 标题
72 subplot(1,3,2);                     % 将窗口分割成1*3的,当前是第2个子图
73 stem(h,'LineWidth',2);              % 绘制单位脉冲响应函数
74 title('单位脉冲响应函数h');         % 标题
75 subplot(1,3,3);                     % 将窗口分割成1*3的,当前是第3个子图
76 stem(y,'LineWidth',2);              % 绘制输出信号
77 title('输出信号y');                 % 标题
复制代码

 

posted @   菜yuan~  阅读(12)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示