【MATLAB】有关生成波形的时间向量的一些问题研究(自用)

1. 引言

博主老忘记该如何创建正确的时间向量,这次在研究GCC-PHAT算法用MATLAB进行仿真的时候发现了一点问题,故进行了一点点的小研究。

2. 时间向量的第一种创建方式

先上代码:

clc; close all; clear all;

fs = 20000;     % 采样率
N = 1024;       % 采样点数
f = 2000;       % 信号频率

t1 = 0: 1/fs : 10 * (fs / f) * (1 / fs);    % 时间向量
X1 = sin(2 * pi * f * t1);                  % 信号创建
figure(1);                                  % 创建图窗窗口
plot(t1, X1);                               % 创建波形图像

上波形图像:
image

2.1 解释

t1 = 0: 1/fs : 10 * (fs / f) * (1 / fs);    % 时间向量

可以看到,这个时间向量的创建是从\(0\)开始;步进为\(\frac{1}{f_{s}}\),即采样周期\(T_{s}\)(就是一个采样点距离下一个采样点的时间间隔,这个要区分一下);结束是在\(10*(\frac{f_{s}}{f}) * (\frac{1}{f_{s}})\),其中\(\frac{f_{s}}{f}\)是采样的到的信号一个周期的点数,那么\(10*(\frac{f_{s}}{f})\)就是采样到的信号十个周期的点数,并且\((\frac{1}{f_{s}})\)为采样周期,十个周期的点数乘以采样周期(特别注意采样周期的定义!),在图像中就可以显示出十个周期的波形,如上图所示。

3. 时间向量的第二种创建方式

先上代码:

clc; close all; clear all;

fs = 20000;     % 采样率
N = 1024;       % 采样点数
f = 2000;       % 信号频率

t2 = (0: 10 - 1) * (1 / fs);    % 时间向量
X2 = sin(2 * pi * f * t2);      % 信号创建
figure(2);                      % 创建图窗窗口
plot(t2, X2);                   % 创建波形图像

再上图像:
image

3.1 解释

t2 = (0: 10 - 1) * (1 / fs);    % 时间向量

可以看到第二种方式与第一种方式还是有比较明显的区别的,不过还是从\(0\)开始;结束是在\(10-1\)其实就是点数,减\(1\)是因为,在数字信号中,索引是从零开始的,减一就是去除了零索引,作为正常从一开始的数来计算,可以看到就是有\(10\)个点;最后乘上 \(\frac{1}{f_{s}}\),即采样周期(还是强调定义,是两个采样点之间的时间间隔),这里有十个点数,乘以采样周期,那么这个时间向量就是从零到这十个采样点所经过的时间。

4. 时间向量的第三种创建方式

代码:

clc; close all; clear all;

fs = 20000;     % 采样率
N = 1024;       % 采样点数
f = 2000;       % 信号频率

t3 = 0: 1/fs : (10-1) * (1 / fs);   % 时间向量
X3 = sin(2 * pi * f * t3);          % 信号创建
figure(3);                          % 创建图窗窗口
plot(t3, X3);                       % 创建波形图像

图像:
image

其实第三种和第一种其实是一样的,只是形式不一样,这里就不再解释了,相信明白了前两种写法后第三种自然就会明白了

5. 总结

时间向量的创建还是非常重要的,在仿真中对于各种运算、变换后,想要创建图像时,时间向量稍不注意就会导致报错(对于我来说)。反正,就这样吧。

博客导航

博客导航

posted @ 2025-04-13 20:56  膝盖中箭卫兵  阅读(186)  评论(0)    收藏  举报
ORCID iD icon https://orcid.org/0000-0001-5102-772X