Main Content

创建均匀和非均匀时间向量

您可以创建均匀和不均匀时间向量以用于涉及时间序列的计算。

均匀时间向量

如果您知道采样频率,请使用冒号运算符。如果您的系统在一秒内以 15 Hz 的速率对时间采样,您将获得 16 个读数,包括在零处的一个读数。

Fs = 15;
Ts = 1/Fs;
ts = 0:Ts:1;

如果您知道时间区间的开始和结束以及样本数量,请使用 linspace。假设您启动秒表并在一秒后停止它。如果您知道您的仪器获得了 15 个读数,您可以生成时间向量。

tl = linspace(0,1,15);

您可以直接基于样本计算采样率,并使用它来重新构造时间向量。

sf = 1/(tl(2)-tl(1));

TL = (0:length(tl)-1)/sf;

ErrorTL = max(abs(tl-TL))
ErrorTL = 0

您还可以使用 linspace 重新构造 ts

lts = length(ts);
TS = linspace(ts(1),ts(lts),lts);

ErrorTS = max(abs(ts-TS))
ErrorTS = 1.1102e-16

默认情况下,linspace 和冒号运算符用于创建行向量。对行向量进行转置可获得列向量。

tcol = tl';
ttrans = ts';

NoteTo import an evenly spaced time vector into Simulink(R), use an expression of the formtimeVector=timeStep*(startTime/timeStep:endTime/timeStep)rather thantimeVector=(startTime:timeStep:endTime).For more information, see "Load Data to Root-Level Input Ports" in the Simulink documentation.

非均匀时间向量

linspace 和冒号运算符结合使用,可生成任意特征的非均匀时间向量。

假设您必须对一个高斯调制正弦脉冲进行采样。该脉冲在某个一秒区间内变化迅速,但在前几秒和后几秒内变化缓慢。

以 100 Hz 的频率对感兴趣的区域进行采样,在之前和之后只采集五个样本。使用方括号串联向量。

gpl = @(x) 2.1*gauspuls(x-1.5,5,0.4);

Ffast = 100;
Tf = 1/Ffast;
Nslow = 5;
tdisc = [linspace(0,1,Nslow) 1+Tf:Tf:2-Tf linspace(2,3,Nslow)];

生成函数的 20001 个样本来对连续时间脉冲进行仿真。叠加由 tsf 定义的样本绘图。

Tcont = linspace(0,3,20001)';

plot(Tcont,gpl(Tcont),tdisc,gpl(tdisc),'o','markersize',5)

另请参阅