Main Content

等間隔および不等間隔の時間ベクトルの作成

時系列を含む計算で使用するための等間隔および不等間隔の時間ベクトルを作成することができます。

等間隔時間ベクトル

サンプリング周波数が既知の場合は、コロン演算子を使用します。システムが 1 秒間に 15 Hz のレートで時間をサンプリングする場合は、時間ゼロのものを含め 16 の読み取りが得られます。

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

時間間隔の開始および終了とサンプル数が既知の場合は、linspace を使用します。ストップウォッチを開始して 1 秒後に停止するとします。計測で 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 とコロン演算子を組み合わせます。

サンプリングしなければならないガウス変調正弦波パルスがあるとします。パルスは 1 秒の間隔の間では急速に変化しますが、その前と後の秒では徐々に変化します。

関心領域を 100 Hz でサンプリングし、その前と後の領域からは 5 つのみサンプリングします。大かっこを使用してベクトルを連結します。

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)];

関数の 20,001 個のサンプルを生成し、連続時間パルスをシミュレーションします。tsf で定義されたサンプルのプロットを重ね合わせます。

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

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

Figure contains an axes object. The axes object contains 2 objects of type line.

参考