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 フィルターを使用して入力信号を内挿してパルス整形を適用します。出力は、内挿後の信号の値で構成されます。

入力引数

すべて展開する

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

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

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

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

出力引数

すべて展開する

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

オブジェクトは、1 番目の次元全体で各チャネルを内挿およびフィルター処理し、KoN 列の出力行列を生成します。出力信号のデータ型は、入力信号のデータ型と同じです。

オブジェクト関数

オブジェクト関数を使用するには、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 の内部状態のリセット

すべて折りたたむ

スクエア ルート レイズド コサイン (RRC) 送信フィルター オブジェクトを使用して信号を内挿し、フィルター処理された信号のスペクトルを表示します。

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

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

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

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

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

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

filteredData = txfilter(data);

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

spectrumAnalyzer = spectrumAnalyzer(SampleRate=8e6);

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

spectrumAnalyzer(filteredData)
release(spectrumAnalyzer)

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

さまざまなフィルター スパンを設定する RRC フィルター オブジェクトを作成します。

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

オブジェクト関数coeffsおよびfreqzを使用して、さまざまなフィルター スパンのフィルター応答を取得します。さまざまなフィルター スパンの振幅応答をプロットします。

n  = 512; % Number of points to compute frequency response
[h2,w2] = freqz(coeffs(txfilt2).Numerator,n);
[h4,w4] = freqz(coeffs(txfilt4).Numerator,n);
[h6,w6] = freqz(coeffs(txfilt6).Numerator,n);
[h8,w8] = freqz(coeffs(txfilt8).Numerator,n);
[h16,w16] = freqz(coeffs(txfilt16).Numerator,n);

plot([w2 w4 w6 w8 w16]/(pi), ...
    mag2db(abs([h2 h4 h6 h8 h16])))
grid
xlabel("Frequency (Hz)")
ylabel("Attenuation (dB)")
legend('Span 2 symbols','Span 4 symbols','Span 6 symbols', ...
    'Span 8 symbols','Span 16 symbols')

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

txfilter = comm.RaisedCosineTransmitFilter;
freqz(txfilter)

オブジェクト関数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 のゲイン) であることが示されます。

freqz(txfilter)

ポリフェーズ分解を使用するマルチレート フィルターを作成する場合、関数 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

成分のフィルターを個別に解析するには、対応するポリフェーズ成分ベクトルで解析関数の 1 つを使用します。たとえば、最初の成分のフィルターのインパルス応答をプロットするには、ポリフェーズ行列の最初のベクトルに対してimpzを使用します。

impz(p(1,:))

拡張機能

バージョン履歴

R2013b で導入