Main Content

comm.BasebandFileReader

ファイルからのベースバンド信号の読み取り

説明

comm.BasebandFileReader System object™ は、comm.BasebandFileWriter System object により書き込まれた特定のタイプのバイナリ ファイルからベースバンド信号を読み取ります。ベースバンド信号は、通常はゼロでない中心周波数から 0 Hz にダウンコンバートされます。SampleRate プロパティと CenterFrequency プロパティはファイルの作成時に保存されます。comm.BasebandFileReader オブジェクトは、サンプルレート、中心周波数、チャネル数、および任意の記述データを自動的に読み取り、読み取り専用プロパティに保存します。

ファイルからベースバンド ファイルを読み取るには、次のようにします。

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

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

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

作成

説明

bbr = comm.BasebandFileReader は、ベースバンド ファイル リーダー System object を作成し、comm.BasebandFileWriter System object により書き込まれた特定のタイプのバイナリ ファイルからベースバンド信号を読み取ります。

bbr = comm.BasebandFileReader(fname) は、Filename プロパティを fname に設定します。

bbr = comm.BasebandFileReader(fname,spf) はさらに、SamplesPerFrame プロパティを spf に設定します。

bbr = comm.BasebandFileReader(___,Name=Value) は、前述の任意の構文の入力引数の組み合わせに加えて、名前と値の引数を 1 つ以上使用してプロパティを設定します。たとえば、SampleRate=2 は、ベースバンド ファイル リーダーのサンプル レートを 2 に設定します。

プロパティ

すべて展開する

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

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

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

読み取るベースバンド ファイルの名前。string スカラーまたは文字ベクトルとして指定します。このオブジェクトは絶対パスを保存および表示します。

ヒント

ファイルが MATLAB® パスにない場合は、絶対パスを指定します。

データ型: string | char

このプロパティは読み取り専用です。

保存されたベースバンド信号のサンプル レート (Hz 単位)。正のスカラーとして返されます。

データ型: double

このプロパティは読み取り専用です。

保存されたベースバンド信号の中心周波数 (Hz 単位)。正のスカラーまたは行ベクトルとして返されます。このプロパティが行ベクトルの場合、各要素はマルチチャネル信号内のチャネルの中心周波数です。

データ型: double

このプロパティは読み取り専用です。

保存されたベースバンド信号のチャネル数。正の整数として返されます。

データ型: double

このプロパティは読み取り専用です。

ベースバンド信号を説明するデータ。ベースバンド ファイル ライターの作成時に定義されたフィールドから成る構造体として返されます。ファイルに記述データがない場合、このプロパティは空の構造体になります。

データ型: struct

出力フレームごとのサンプル数。正の整数または Inf として指定します。このプロパティが Inf の場合、出力フレームにはベースバンド ファイル内のすべてのサンプルが含まれます。

データ型: double

ベースバンド ファイルを繰り返し読み取るオプション。logical 0 (false) または logical 1 (true) として指定します。

  • このプロパティが false の場合、オブジェクトは、部分的に埋まっている最後のフレームにゼロを追加します。次に、オブジェクトはすべてゼロのフレームを返します。

  • このプロパティが true の場合、オブジェクトは、最初のサンプルから始めて、ファイルを繰り返し読み取ります。

データ型: logical

使用法

説明

samples = bbr() は、Filename プロパティで指定されたファイルからベースバンド信号ファイルを読み取ります。

出力引数

すべて展開する

ファイルから読み取られたベースバンド サンプル。Filename で指定されたベースバンド信号ファイルから読み取られた複素数値で成る SamplesPerFrameNumChannels 列の行列として返されます。SamplesPerFrame プロパティが Inf の場合、出力行列にはベースバンド信号ファイル内のすべてのサンプルが含まれます。

オブジェクト関数

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

release(obj)

すべて展開する

infoベースバンド ファイル リーダーに関する特性情報
isDoneデータ終了ステータス
stepSystem object のアルゴリズムの実行
releaseリソースを解放し、System object のプロパティ値と入力特性の変更を可能にします。
resetSystem object の内部状態のリセット

すべて折りたたむ

comm.BasebandFileReader System object の 1 回の呼び出しで、ファイルからベースバンド信号を読み取ります。1 回のオブジェクト呼び出しでファイルからすべてのサンプルを読み取るには、フレームあたりのサンプル数を inf に設定するか、データ ファイル内のサンプル数と等しくなるように設定します。

フレームあたりのサンプル数を inf に設定して、ベースバンド ファイル リーダー オブジェクトを作成します。info メソッドを使用してbbr に関する追加情報を取得します。ファイルには 'double' 型のサンプルが 10,000 個含まれています。サンプルはまったく読み取られていません。

bbr1 = comm.BasebandFileReader('baseband_samples_1ghz.bb',SamplesPerFrame=inf)
bbr1 = 
  comm.BasebandFileReader with properties:

            Filename: '/tmp/Bdoc22b_2051947_1636640/tp718d87a3/comm-ex94749964/baseband_samples_1ghz.bb'
          SampleRate: 1
     CenterFrequency: 100000000
         NumChannels: 1
            Metadata: [1x1 struct]
     SamplesPerFrame: Inf
    CyclicRepetition: false

info(bbr1)
ans = struct with fields:
    NumSamplesInData: 10000
            DataType: 'double'
      NumSamplesRead: 0

これで、bbr オブジェクトを 1 回呼び出すことで baseband_samples_1ghz.bb ファイルの内容全体が読み取られます。すべてのサンプルが読み取られたことを確認します。

samples1 = bbr1();
info(bbr1)
ans = struct with fields:
    NumSamplesInData: 10000
            DataType: 'double'
      NumSamplesRead: 10000

ベースバンド ファイル リーダーのリソースを解放します。

release(bbr1)

代わりに、オブジェクトを 1 回呼び出してファイルからすべてのサンプルを読み取るには、フレームあたりのサンプル数をデータ ファイル内のサンプル数と等しくなるように設定します。これを行うには、フレームあたりのサンプル数の設定 (bbr.SamplesPerFrame) を、オブジェクト関数 info によって返される NumSamplesInData の値に更新しなければなりません。

ベースバンド ファイル リーダー オブジェクトを作成し、オブジェクト関数 info によって返された構造体を表示します。

bbr2 = comm.BasebandFileReader('baseband_samples_1ghz.bb')
bbr2 = 
  comm.BasebandFileReader with properties:

            Filename: '/tmp/Bdoc22b_2051947_1636640/tp718d87a3/comm-ex94749964/baseband_samples_1ghz.bb'
          SampleRate: 1
     CenterFrequency: 100000000
         NumChannels: 1
            Metadata: [1x1 struct]
     SamplesPerFrame: 100
    CyclicRepetition: false

bbrinfo = info(bbr2)
bbrinfo = struct with fields:
    NumSamplesInData: 10000
            DataType: 'double'
      NumSamplesRead: 0

bbr2.SamplesPerFrame = bbrinfo.NumSamplesInData
bbr2 = 
  comm.BasebandFileReader with properties:

            Filename: '/tmp/Bdoc22b_2051947_1636640/tp718d87a3/comm-ex94749964/baseband_samples_1ghz.bb'
          SampleRate: 1
     CenterFrequency: 100000000
         NumChannels: 1
            Metadata: [1x1 struct]
     SamplesPerFrame: 10000
    CyclicRepetition: false

これで、bbr オブジェクトを 1 回呼び出すことで baseband_samples_1ghz.bb ファイルの内容全体が読み取られます。すべてのサンプルが読み取られたことを確認し、bbr1bbr2 によって読み取られたサンプルを比較します。

samples2 = bbr2();
info(bbr2)
ans = struct with fields:
    NumSamplesInData: 10000
            DataType: 'double'
      NumSamplesRead: 10000

isequal(samples1,samples2)
ans = logical
   1

ベースバンド ファイル リーダーのリソースを解放します。

release(bbr2)

ベースバンド ファイル リーダー System object™ の呼び出しを複数回使用して、ファイルからベースバンド信号を読み取ります。

ベースバンド ファイル リーダー オブジェクトを作成します。

bbr = comm.BasebandFileReader('baseband_samples_1ghz.bb')
bbr = 
  comm.BasebandFileReader with properties:

            Filename: '/tmp/Bdoc22b_2051947_1636640/tp718d87a3/comm-ex87872352/baseband_samples_1ghz.bb'
          SampleRate: 1
     CenterFrequency: 100000000
         NumChannels: 1
            Metadata: [1x1 struct]
     SamplesPerFrame: 100
    CyclicRepetition: false

オブジェクト関数 info を使用して、ベースバンド ファイル リーダーに関する追加情報を取得します。ファイルにはデータ型 double のサンプルが 10,000 個含まれています。サンプルはまったく読み取られていません。

info(bbr)
ans = struct with fields:
    NumSamplesInData: 10000
            DataType: 'double'
      NumSamplesRead: 0

ベースバンド ファイル (baseband_samples_1ghz.bb) にはサンプルが 10,000 個含まれています。ベースバンド ファイル リーダー オブジェクトのフレームあたりのサンプル数が 100 に設定されているため、ベースバンド ファイルの内容全体を読み取るには、オブジェクトを複数回呼び出す必要があります。ファイルからすべてのサンプルを読み取るには、オブジェクト関数 isDone を使用して while ループを終了します。

y = [];
while ~isDone(bbr)
    x = bbr();
    y = cat(1,y,x);
end

オブジェクト関数 info を使用して、すべてのサンプルがファイルから読み取られたことを確認します。サンプルの合計数と読み取られたサンプル数は同じです。

info(bbr)
ans = struct with fields:
    NumSamplesInData: 10000
            DataType: 'double'
      NumSamplesRead: 10000

ベースバンド データの絶対値の振幅をプロットします。

plot(abs(y))
title('Baseband Signal Read From File')
xlabel('Samples')
ylabel('Amplitude')

Figure contains an axes object. The axes object with title Baseband Signal Read From File contains an object of type line.

ベースバンド ファイル リーダーのリソースを解放します。

release(bbr)

拡張機能

バージョン履歴

R2016b で導入