Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

pulstran

説明

y = pulstran(t,d,func) では、連続関数 func のサンプルに基づいてパルス列が生成されます。

y = pulstran(t,d,func,fs)fs のサンプルレートを使用します。

y = pulstran(t,d,p) は、ベクトル p の遅延を伴う複数のプロトタイプ パルスが内挿され、その和であるパルス列を生成します。

y = pulstran(___,intfunc) は、三重三次内挿法を指定します。使用可能な手法については、interp1を参照してください。前の入力構文のいずれでもこのパラメーターを使用できます。

すべて折りたたむ

この例では、単位幅の既定の矩形パルスを使用してパルス列を生成します。反復周波数は 0.5 Hz、信号長は 60 秒、サンプルレートは 1 kHz です。ゲイン ファクターは、周波数 0.05 Hz の正弦波です。

t = 0:1/1e3:60;
d = [0:2:60;sin(2*pi*0.05*(0:2:60))]';
x = @rectpuls;
y = pulstran(t,d,x);

plot(t,y)
hold off
xlabel('Time (s)')
ylabel('Waveform')

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

この例では、反復周波数 3 Hz の非対称ノコギリ波形を生成します。ノコギリの幅は 0.2 秒、歪度係数は –1 です。信号長は 1 秒で、サンプルレートは 1 kHz です。パルス列をプロットします。

fs = 1e3;
t = 0:1/1e3:1;
d = 0:1/3:1;   
x = tripuls(t,0.2,-1);
y = pulstran(t,d,x,fs);

plot(t,y)
hold off
xlabel('Time (s)')
ylabel('Waveform')

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

10 MHz のサンプル レートで、50% の帯域幅をもつ 10 kHz のガウス RF パルスをプロットします。包絡線がピークから 40 dB 減衰するところでパルスを打ち切ります。

fs = 1e7;
tc = gauspuls('cutoff',10e3,0.5,[],-40); 
t = -tc:1/fs:tc; 
x = gauspuls(t,10e3,0.5); 

plot(t,x)
xlabel('Time (s)')
ylabel('Waveform')

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

パルス繰り返し周波数は 1 kHz、サンプル レートは 50 kHz、パルス列の長さは 25 ms です。ゲイン ファクターは、周波数 0.1 Hz の正弦波です。

ts = 0:1/50e3:0.025;
d = [0:1/1e3:0.025;sin(2*pi*0.1*(0:25))]';
y = pulstran(ts,d,x,fs);

周期性ガウス パルス列をプロットします。

plot(ts,y)
xlim([0 0.01])
xlabel('Time (s)')
ylabel('Waveform')

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

指数によって減衰する正弦波を構成するカスタム パルスを生成する関数を記述します。パルスは時間の奇関数です。生成する関数は、正弦波周波数と減衰係数の単一の値を指定する 2 番目の入力引数をもちます。1 kHz で 1 秒間サンプリングされた、周波数と減衰する値が両方とも 30 に等しい、生成されたパルスを表示します。

fnx = @(x,fn) sin(2*pi*fn*x).*exp(-fn*abs(x));

ffs = 1000;
tp = 0:1/ffs:1;

pp = fnx(tp,30);

plot(tp,pp)
xlabel('Time (s)')
ylabel('Waveform')

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

カスタム パルスの列を生成するには、関数 pulstran を使用します。列は 2 kHz で 1.2 秒間サンプリングされています。パルスは、3 分の 1 秒ごとに発生し、指数関数的に減少する振幅をもちます。

生成されたパルスをプロトタイプとして最初に指定します。関数呼び出しにはプロトタイプのサンプルレートを含めます。この場合、pulstran は指定された場所にパルスを複製します。

fs = 2e3;
t = 0:1/fs:1.2;

d = 0:1/3:1;
dd = [d;4.^-d]';

z = pulstran(t,dd,pp,ffs);

plot(t,z)
xlabel('Time (s)')
ylabel('Waveform')

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

パルス列を再度生成します。ただし、ここでは生成する関数を入力引数として使用します。関数呼び出しに周波数と減衰するパラメーターを含めます。この場合、pulstran はゼロ付近で中央揃えされるようにパルスを生成します。

y = pulstran(t,dd,fnx,30);

plot(t,y)
xlabel('Time (s)')
ylabel('Waveform')

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

周波数が 0.25 Hz のノコギリ波形を指数関数的に減衰するカスタムを生成する関数を記述します。生成する関数は、ノコギリ波周波数と減衰係数の単一の値を指定する 2 番目の入力引数をもちます。0.1 kHz で 1 秒間サンプリングされた、周波数と減衰値が 50 に等しい、生成されたパルスを表示します。

fnx = @(x,fn) sawtooth(2*pi*fn*0.25*x).*exp(-2*fn*x.^2);

fs = 100;
t = 0:1/fs:1;

pp = fnx(t,50);

plot(t,pp)

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

カスタム パルスの列を生成するには、関数 pulstran を使用します。列は 0.1 kHz で 125 秒間サンプリングされています。パルスは 25 秒ごとに発生し、指数関数的に減少する振幅をもちます。

生成されたパルスをプロトタイプとして指定します。既定の線形内挿法、最近傍内挿および区分的 3 次内挿を使用した 3 つのパルス列を生成します。単一プロットのパルス列を比較します。

d = [0:25:125; exp(-0.015*(0:25:125))]';
ffs = 100;
tp = 0:1/ffs:125;

r = pulstran(tp,d,pp);
y = pulstran(tp,d,pp,'nearest');
q = pulstran(tp,d,pp,'pchip');


plot(tp,r)
hold on
plot(tp,y)
plot(tp,q)
xlim([0 125])
legend('Linear interpolation','Nearest neighbor interpolation','Piecewise cubic interpolation')
hold off

Figure contains an axes. The axes contains 3 objects of type line. These objects represent Linear interpolation, Nearest neighbor interpolation, Piecewise cubic interpolation.

入力引数

すべて折りたたむ

func が評価される時間値。ベクトルとして指定します。

配列 t の値から削除されたオフセット。実数ベクトルとして指定します。オプションのゲイン ファクターは、d を 2 列の行列 (列 1 に定義されたオフセット、列 2 に関連するゲイン) として設定することで、各遅延評価に適用できます。d を行ベクトルとして指定した場合、値は遅延としてのみ解釈されます。

そのサンプルに基づいたパルス列を生成するために使用される連続関数。'rectpuls''gauspuls''tripuls'、または関数ハンドルとして指定します。

関数ハンドルとして func を使用する場合、次のように関数パラメーターを渡すことができます。

y = pulstran(t,d,'gauspuls',10e3,0.5); 

これは、50% の帯域幅をもつ 10 kHz のガウス パルスを使用してパルス列を作成します。

プロトタイプ関数。ベクトルとして指定します。p の区間は [0,(length(p)-1)/fs] で表されます。そのサンプルは、この区間の外側では一様にゼロです。既定の設定では、線形内挿を使用して遅延が生成させます。

サンプルレート (Hz 単位)。実数スカラーとして指定します。

内挿法。次の表のオプションのいずれかとして指定します。

メソッド

説明

連続性

コメント

'linear'

線形内挿。クエリ点での内挿値は、それぞれの次元の隣接するグリッド点での値の線形内挿を基にしています。これは既定の内挿法です。

C0

  • 少なくとも 2 つの点が必要

  • 最近傍よりも多くのメモリが必要で計算に時間がかかる

'nearest'

最近傍内挿。クエリ点での内挿値は、最も近いサンプル グリッド点の値です。

不連続

  • 少なくとも 2 つの点が必要

  • メモリ要件があまり厳しくない

  • 最速の計算時間

'next'

次の傍内挿。クエリ点での内挿値は、次のサンプル グリッド点の値です。

不連続

  • 少なくとも 2 つの点が必要

  • メモリ要件と計算時間は 'nearest' とほぼ同じ

'previous'

前の傍内挿クエリ点での内挿値は、前のサンプル グリッド点の値です。

不連続

  • 少なくとも 2 つの点が必要

  • メモリ要件と計算時間は 'nearest' とほぼ同じ

'pchip' または 'cubic'

形状維持区分的 3 次内挿。クエリ点での内挿値は、隣接するグリッド点の値の形状維持区分的 3 次内挿を基にしています。

C1

  • 少なくとも 4 つの点が必要

  • 'linear' よりも多くのメモリが必要で計算に時間がかかる

'v5cubic'

MATLAB® 5 で使用される 3 次畳み込み。

C1

点は一定間隔でなければなりません。

'makima'

変更された Akima 3 次エルミート内挿。クエリ点での内挿値は、最大 3 つの角度をもつ多項式の区分的関数を基にしています。Akima 式はオーバーシュートを回避するために変更されます。

C1

  • 少なくとも 2 つの点が必要

  • 'spline' よりも少ない振動を作成する。ただし、'pchip' ほど大胆にフラットにしない

  • 計算は、'pchip' よりも多くなるが、通常 'spline' よりも少ない

  • メモリ要件は 'spline' の要件と似ている

'spline'

節点なしの端点条件を使用したスプライン内挿。クエリ点での内挿値は、それぞれの次元の隣接するグリッド点での値の 3 次内挿を基にしています。

C2

  • 少なくとも 4 つの点が必要

  • 'pchip' よりも多くのメモリが必要で計算に時間がかかる

出力引数

すべて折りたたむ

関数で生成したパルス列。ベクトルとして返されます。

拡張機能

R2006a より前に導入