Main Content

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

comm.RaisedCosineTransmitFilter

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

説明

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

レイズド コサイン FIR フィルターを使用して入力信号を内挿してパルス整形を適用するには、次のようにします。

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

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

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

作成

説明

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

txfilter = comm.RaisedCosineTransmitFilter(Name,Value) は、1 つ以上の名前と値のペアを使用してプロパティを設定します。各プロパティ名を引用符で囲みます。たとえば、comm.RaisedCosineTransmitFilter('FilterSpanInSymbols',15) では、フィルター スパンが 15 シンボルに設定されたレイズド コサイン送信フィルター System object が設定されます。

プロパティ

すべて展開する

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

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

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

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

データ型: char | string

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

データ型: double

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

データ型: double

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

データ型: double

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

データ型: double

使用法

説明

y = txfilter(x) は、レイズド コサイン FIR フィルターを使用して入力信号を内挿してパルス整形を適用します。出力は、内挿後の信号の値で構成されます。

入力引数

すべて展開する

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

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

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

出力引数

すべて展開する

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

オブジェクトは、1 番目の次元全体で各チャネルを内挿およびフィルター処理し、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) 送信フィルター オブジェクトを使用して信号を内挿し、フィルター処理された信号のスペクトルを表示します。

1 秒あたり 1e6 シンボルのシンボル レートでランダムなバイポーラ シンボルを作成します。

data = 2*randi([0 1],1e6,1) - 1;

SRRC 送信フィルター オブジェクトを作成します。既定では、フィルターが平方根の形状に設定され、シンボルあたりのサンプル数が 8 に設定されます。

txfilter = comm.RaisedCosineTransmitFilter
txfilter = 
  comm.RaisedCosineTransmitFilter with properties:

                     Shape: 'Square root'
             RolloffFactor: 0.2000
       FilterSpanInSymbols: 10
    OutputSamplesPerSymbol: 8
                      Gain: 1

SRRC フィルターを使ってデータをフィルター処理します。

filteredData = txfilter(data);

8e6 サンプリング レートでスペクトル アナライザー オブジェクトを作成します。このサンプリング レートは、フィルター処理された信号のサンプリング レートと一致します。

spectrumAnalyzer = spectrumAnalyzer(SampleRate=8e6);

スペクトル アナライザー オブジェクトを使用して、フィルター処理された信号のスペクトルを表示します。

spectrumAnalyzer(filteredData)
release(spectrumAnalyzer)

さまざまなフィルター スパンでルート レイズド コサイン (SRRC) フィルターから内挿された信号を作成します。さまざまなフィルター設計の振幅応答を調査します。

さまざまなフィルター スパンを設定する SRRC フィルター オブジェクトを作成します。オブジェクト関数coeffsを使用して、フィルター係数を取得します。

txfilt2 = comm.RaisedCosineTransmitFilter('FilterSpanInSymbols',2);
txfilt4 = comm.RaisedCosineTransmitFilter('FilterSpanInSymbols',4);
txfilt6 = comm.RaisedCosineTransmitFilter('FilterSpanInSymbols',6);
txfilt8 = comm.RaisedCosineTransmitFilter('FilterSpanInSymbols',8);
txfilt16 = comm.RaisedCosineTransmitFilter('FilterSpanInSymbols',16);

taps2 = coeffs(txfilt2).Numerator;
taps4 = coeffs(txfilt4).Numerator;
taps6 = coeffs(txfilt6).Numerator;
taps8 = coeffs(txfilt8).Numerator;
taps16 = coeffs(txfilt16).Numerator;

フィルターの可視化ツールを起動して、さまざまなフィルター スパンの振幅応答を表示します。サンプル レートを 1 kHz に指定します。中央揃えの両側応答を表示します。

fvt = fvtool(taps2,1,taps4,1,taps8,1,taps16,1);
fvt.Fs = 1e3;
fvt.FrequencyRange = '[-Fs/2, Fs/2)';
legend(fvt,'Span 2 symbols','Span 4 symbols', ...
    'Span 8 symbols','Span 10 symbols')

Figure Figure 1: Magnitude Response (dB) contains an axes object. The axes object with title Magnitude Response (dB), xlabel Frequency (Hz), ylabel Magnitude (dB) contains 4 objects of type line. These objects represent Span 2 symbols, Span 4 symbols, Span 8 symbols, Span 10 symbols.

ルート レイズド コサイン (SRRC) 送信フィルター System object™ を作成してから、フィルター応答をプロットします。結果には、線形フィルター ゲインが 1 より大きいことが示されます。特に、通過帯域ゲインは 0 dB より大きくなります。

txfilter = comm.RaisedCosineTransmitFilter;
fvtool(txfilter)

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(txfilter);

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

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

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

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

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

fvtool(txfilter)

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.

ポリフェーズ分解を使用するマルチレート フィルターを作成する場合、関数 polyphase を使用すると、成分を行列の行として返して成分のフィルターを個別に解析できます。出力引数を指定して polyphase を使用すると、行単位でサブフィルターが定義されたポリフェーズ分解を含む行列が返されます。

rcfilter = comm.RaisedCosineTransmitFilter;
p = polyphase(rcfilter)
p = 8×11

   -0.0060    0.0097   -0.0133    0.0165   -0.0186    0.3729   -0.0186    0.0165   -0.0133    0.0097   -0.0060
   -0.0051    0.0058   -0.0041   -0.0029    0.0297    0.3621   -0.0524    0.0301   -0.0190    0.0112         0
   -0.0029   -0.0000    0.0075   -0.0255    0.0892    0.3308   -0.0707    0.0368   -0.0206    0.0105         0
    0.0004   -0.0068    0.0196   -0.0477    0.1552    0.2823   -0.0742    0.0364   -0.0184    0.0079         0
    0.0043   -0.0134    0.0300   -0.0653    0.2218    0.2218   -0.0653    0.0300   -0.0134    0.0043         0
    0.0079   -0.0184    0.0364   -0.0742    0.2823    0.1552   -0.0477    0.0196   -0.0068    0.0004         0
    0.0105   -0.0206    0.0368   -0.0707    0.3308    0.0892   -0.0255    0.0075   -0.0000   -0.0029         0
    0.0112   -0.0190    0.0301   -0.0524    0.3621    0.0297   -0.0029   -0.0041    0.0058   -0.0051         0

出力引数を指定せずに polyphase を使用すると、フィルターの可視化ツールが開き、ツールの解析機能を使用してフィルターの調査をすぐに開始できます。FVTool を使用したフィルター解析には、サブフィルターの係数が表示されます。サブフィルターの振幅応答を表示するには、FVTool を使用したフィルター解析のツールストリップで [Magnitude Response] ボタンをクリックします。

polyphase(rcfilter)

Figure Figure 1: Filter Coefficients contains an object of type uilistbox.

拡張機能

バージョン履歴

R2013b で導入