Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

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 フィルターを使用して、入力信号を間引くことによってパルス整形を適用します。出力は、間引き後の信号の値で構成されます。

入力引数

すべて展開する

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

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

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

出力引数

すべて展開する

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

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

オブジェクト関数

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

release(obj)

すべて展開する

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

すべて折りたたむ

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

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

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

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

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

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

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

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

[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.

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

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

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

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

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

txfilter = comm.RaisedCosineTransmitFilter('FilterSpanInSymbols',6);

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

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

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

rxfilter = comm.RaisedCosineReceiveFilter('FilterSpanInSymbols',6);

フィルター可視化ツールを起動して、受信フィルターのインパルス応答を表示します。

fvtool(rxfilter,'Analysis','impulse')

Figure Figure 1: Impulse Response contains an axes object. The axes object with title Impulse Response, xlabel Samples, ylabel Amplitude contains an object of type stem.

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

r = rxfilter(y);

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

stem(r)

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

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

rxfilter = comm.RaisedCosineReceiveFilter;
fvtool(rxfilter)

Figure Figure 1: Magnitude Response (dB) contains an axes object. The axes object with title Magnitude Response (dB), xlabel Normalized Frequency ( times pi blank 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 のゲイン) であることが示されます。

fvtool(rxfilter)

Figure Figure 2: Magnitude Response (dB) contains an axes object. The axes object with title Magnitude Response (dB), xlabel Normalized Frequency ( times pi blank rad/sample), ylabel Magnitude (dB) contains an object of type line.

拡張機能

バージョン履歴

R2013b で導入