メインコンテンツ

comm.RaisedCosineReceiveFilter

レイズド コサイン FIR フィルターを使用した信号間引きによるパルス整形の適用

説明

comm.RaisedCosineReceiveFilter System object™ は、レイズド コサイン有限インパルス応答 (FIR) フィルターを使用して、入力信号を間引くことによってパルス整形を適用します。FIR フィルターは、(FilterSpanInSymbols × InputSamplesPerSymbol + 1) タップ係数をもちます。

レイズド コサイン FIR フィルターを使用して、入力信号を間引くことによってパルス整形を適用するには、次を行います。

  1. comm.RaisedCosineReceiveFilter オブジェクトを作成し、そのプロパティを設定します。

  2. 関数と同様に、引数を指定してオブジェクトを呼び出します。

System object の機能の詳細については、System object とはを参照してください。

作成

説明

rxfilter = comm.RaisedCosineReceiveFilter は、レイズド コサイン FIR フィルターを使用して入力信号を間引くレイズド コサイン受信フィルター System object を返します。このフィルターは、効率的なポリフェーズ FIR 間引き構造体を使用し、ユニット エネルギーをもちます。

rxfilter = comm.RaisedCosineReceiveFilter(Name,Value) は、1 つ以上の名前と値のペアを使用してプロパティを設定します。各プロパティ名を引用符で囲みます。たとえば、comm.RaisedCosineReceiveFilter('RolloffFactor',0.3) は、ロールオフ係数を 0.3 に設定してレイズド コサイン受信フィルター System object を構成します。

プロパティ

すべて展開する

特に指定がない限り、プロパティは "調整不可能" です。つまり、オブジェクトの呼び出し後に値を変更することはできません。オブジェクトは呼び出すとロックされ、ロックを解除するには関数 release を使用します。

プロパティが "調整可能" の場合、その値をいつでも変更できます。

プロパティ値の変更の詳細については、System object を使用した MATLAB でのシステム設計を参照してください。

フィルターの形状。'Square root' または 'Normal' として指定します。

データ型: char | string

ロールオフ係数。範囲が [0, 1] のスカラーとして指定します。

データ型: double

シンボル内のフィルター スパン。正の整数として指定します。オブジェクトは理想のレイズド コサイン フィルターの無限インパルス応答 (IIR) を、このプロパティで指定されるシンボル数をカバーするインパルス応答に打ち切ります。

データ型: double

シンボルあたりの入力サンプル数。正の整数として指定します。

データ型: double

間引き係数。範囲 [1, InputSamplesPerSymbol] の整数として指定します。値は InputSamplesPerSymbol に均等に分割されなければなりません。出力信号のサンプル レートは、length(Y)/length(X)DecimationFactor と等しくなるように、間引き係数で削減されます。行列入力信号の場合、入力行の数は間引き係数の倍数でなければなりません。

データ型: double

間引きオフセット。範囲 [0, (DecimationFactor − 1)] の整数として指定します。このプロパティは、オブジェクトがダウンサンプリングの前に破棄する、フィルター処理されたサンプルの数を指定します。

データ型: double

線形フィルター ゲイン。正のスカラーとして指定します。オブジェクトは、ユニット エネルギーをもつレイズド コサイン フィルターを設計し、線形フィルター ゲインを適用して最終タップ係数値を取得します。

データ型: double

使用法

説明

Y = rxfilter(X) は、レイズド コサイン FIR フィルターを使用して、入力信号を間引くことによってパルス整形を適用します。出力は、間引き後の信号の値で構成されます。

入力引数

すべて展開する

入力信号。列ベクトルまたは KiN 列の行列として指定します。Ki は信号チャネルあたりの入力サンプル数、N は信号チャネルの数です。

KiN 列の行列入力の場合、オブジェクトは、入力行列の列を N 個の独立したチャネルとして扱います。

このオブジェクトは可変サイズの入力を受け入れます。オブジェクトがロックされると、各入力チャネルのサイズは変更できますが、チャネルの数は変更できません。詳細については、Variable-Size Signal Support with System Objectsを参照してください。

データ型: double | single
複素数のサポート: あり

出力引数

すべて展開する

出力信号。列ベクトルまたは KoN 列の行列として返されます。KoKi / DecimationFactor と等しくなります。Ki は信号チャネルあたりの入力サンプル数、N は信号チャネルの数です。

System object は、時間の経過により各チャネルをフィルター処理し、KoN 列の出力行列を生成します。出力信号のデータ型は、入力信号のデータ型と同じです。

オブジェクト関数

オブジェクト関数を使用するには、System object を最初の入力引数として指定します。たとえば、obj という名前の System object のシステム リソースを解放するには、次の構文を使用します。

release(obj)

すべて展開する

infoフィルター System object に関する情報
coeffsフィルターの係数
costComputational cost of implementing filter System object
freqz離散時間フィルターの周波数応答
grpdelayGroup delay response of discrete-time filter
impz離散時間フィルターのインパルス応答
order離散時間フィルター System object の次数
stepSystem object のアルゴリズムの実行
releaseリソースを解放し、System object のプロパティ値と入力特性の変更を可能にします。
resetSystem object の内部状態のリセット

すべて折りたたむ

ルートレイズドコサイン (RRC) 送信フィルターの出力を、対応する RRC 受信フィルターを使用してフィルター処理します。入力信号のシンボルあたりのサンプル数は 8 です。

シンボルあたりの出力サンプル数を 8 に設定して、RRC 送信フィルター オブジェクトを作成します。

 txfilter = comm.RaisedCosineTransmitFilter('OutputSamplesPerSymbol',8);

シンボルあたりの入力サンプル数を 8、間引き係数を 8 に設定して、RRC 受信フィルターを作成します。

rxfilter = comm.RaisedCosineReceiveFilter('InputSamplesPerSymbol',8, ...
    'DecimationFactor',8);

関数 coeffs を使用して両方のフィルターのフィルター係数を決定します。

txCoef = coeffs(txfilter);
rxCoef = coeffs(rxfilter);

2 つのフィルターの振幅応答を表示します。結果には応答が同一であることが示されます。ここでは、関数freqzおよびplotを使用して振幅応答をプロットします。Filter Analyzerアプリでフィルター応答を生成することもできます。

[htx,f] = freqz(txfilter);
hrx = freqz(rxfilter);

plot(f/pi,mag2db(abs([htx hrx])))
ylabel("Magnitude (dB)")
xlabel("Normalized Frequency (\times\pi rad/sample)")
legend(["Tx" "Rx"]+" Filter")
grid
ylim([-65 15])

Figure contains an axes object. The axes object with xlabel Normalized Frequency ( times pi blank rad/sample), ylabel Magnitude (dB) contains 2 objects of type line. These objects represent Tx Filter, Rx Filter.

ランダムなバイポーラ信号を生成します。RRC 送信フィルター オブジェクトを使用して信号を内挿します。

 preTx = 2*randi([0 1],100,1) - 1;
 y = txfilter(preTx);

RRC 受信フィルター オブジェクトを使用して信号を間引きします。

 postRx = rxfilter(y);

フィルターの遅延はフィルター スパンと同じです。フィルター遅延を考慮して、プロットされたサンプルを調整し、Tx フィルター処理前の信号を Rx フィルター処理後の信号と比較します。結合された受信および送信 RRC フィルターは整合フィルターのペアを生成するため、2 つの信号は互いに重なり合います。

delay = txfilter.FilterSpanInSymbols;
x = (1:(length(preTx)-delay));
plot(x,preTx(1:end-delay),x,postRx(delay+1:end))
legend('Pre-Tx filter','Post-Rx filter')

Figure contains an axes object. The axes object contains 2 objects of type line. These objects represent Pre-Tx filter, Post-Rx filter.

6 つのシンボル区間のスパンをフィルター処理するためにインパルス応答が打ち切られているルートレイズドコサイン (RRC) フィルターを使用して、バイポーラ信号を間引きします。

フィルター スパンを 6 つのシンボルに設定して、RRC 送信 FIR フィルターを作成します。オブジェクトは、インパルス応答を 6 つのシンボルに切り詰めます。

txfilter = comm.RaisedCosineTransmitFilter(FilterSpanInSymbols=6);

ランダムなバイポーラ信号を生成します。RRC 送信 FIR フィルター オブジェクトを使用して信号をフィルター処理します。

x = 2*randi([0 1],25,1) - 1;
y = txfilter(x);

対応する RRC 受信フィルター オブジェクトを作成します。

rxfilter = comm.RaisedCosineReceiveFilter(FilterSpanInSymbols=6);

impzを使用して、受信フィルターのインパルス応答をプロットします。

impz(rxfilter)

Figure contains an axes object. The axes object with title Impulse Response, xlabel n (samples), ylabel Amplitude contains an object of type stem.

送信フィルターからの出力信号を、対応する RRC 受信フィルター オブジェクトを使用してフィルター処理します。

r = rxfilter(y);

内挿信号をプロットします。結果には、データがフィルターを通過する前のフィルター スパン (6 シンボル) と同一の遅延が示されます。

stem(r)

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

ルートレイズドコサイン (RRC) 受信フィルター オブジェクトを作成します。freqzを使用して、フィルター応答をプロットします。結果には、線形フィルター ゲインが 1 より大きいことが示されます。特に、通過帯域ゲインは 0 dB を超えています。

rxfilter = comm.RaisedCosineReceiveFilter;
freqz(rxfilter)

Figure contains 2 axes objects. Axes object 1 with title Phase, xlabel Normalized Frequency (\times\pi rad/sample), ylabel Phase (degrees) contains an object of type line. Axes object 2 with title Magnitude, xlabel Normalized Frequency (\times\pi rad/sample), ylabel Magnitude (dB) contains an object of type line.

オブジェクト関数coeffsを使用して、フィルター係数を取得し、フィルター ゲインをユニット エネルギーに合わせて調整します。

b = coeffs(rxfilter);

1 の通過帯域ゲインをもつフィルターは、合計が 1 になるようなフィルター係数をもたなければならないため、線形フィルター ゲインをフィルター タップ係数 b.Numerator の合計の逆数に設定します。

rxfilter.Gain = 1/sum(b.Numerator);

結果のフィルター係数の合計が 1 になることを確認します。

bNorm = coeffs(rxfilter);
sum(bNorm.Numerator)
ans = 
1.0000

フィルターの周波数応答をプロットします。結果には通過帯域ゲインが 0 dB (1 のゲイン) であることが示されます。

freqz(rxfilter)

Figure contains 2 axes objects. Axes object 1 with title Phase, xlabel Normalized Frequency (\times\pi rad/sample), ylabel Phase (degrees) contains an object of type line. Axes object 2 with title Magnitude, xlabel Normalized Frequency (\times\pi rad/sample), ylabel Magnitude (dB) contains an object of type line.

拡張機能

すべて展開する

バージョン履歴

R2013b で導入