【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); % 创建波形图像
上波形图像:

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); % 创建波形图像
再上图像:

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); % 创建波形图像
图像:

其实第三种和第一种其实是一样的,只是形式不一样,这里就不再解释了,相信明白了前两种写法后第三种自然就会明白了
5. 总结
时间向量的创建还是非常重要的,在仿真中对于各种运算、变换后,想要创建图像时,时间向量稍不注意就会导致报错(对于我来说)。反正,就这样吧。
博客导航
本文来自博客园,作者:膝盖中箭卫兵,转载请注明原文链接:https://www.cnblogs.com/hai-feng-dev/p/18823696

浙公网安备 33010602011771号
https://orcid.org/0000-0001-5102-772X