Main Content

info

フェージング チャネル オブジェクトの特性情報

説明

S = info(obj) はフェージング チャネル System object™ に関する特性情報が含まれる構造体を返します。

すべて折りたたむ

オブジェクト関数 info を使用して comm.RayleighChannel オブジェクトから情報を取得します。

2 つのパスを含むレイリー チャネル オブジェクトとそのチャネルを介して渡すデータを作成します。

rayleighchan = comm.RayleighChannel( ...
    SampleRate=1000, ...
    PathDelays=[0 4e-3], ...
    AveragePathGains=[0 0])
rayleighchan = 
  comm.RayleighChannel with properties:

             SampleRate: 1000
             PathDelays: [0 0.0040]
       AveragePathGains: [0 0]
     NormalizePathGains: true
    MaximumDopplerShift: 1.0000e-03
        DopplerSpectrum: [1x1 struct]
       ChannelFiltering: true
    PathGainsOutputPort: false

  Use get to show all properties

data = randi([0 1],600,1);

レイリー チャネル オブジェクト情報をチェックします。

info(rayleighchan)
ans = struct with fields:
    ChannelFilterCoefficients: [2x5 double]
           ChannelFilterDelay: 0
          NumSamplesProcessed: 0

チャネルを介してデータを渡し、オブジェクト情報を再度チェックして、処理済みのサンプル数が情報構造体に含まれていることを確認します。

rayleighchan(data);
Sint = info(rayleighchan)
Sint = struct with fields:
    ChannelFilterCoefficients: [2x5 double]
           ChannelFilterDelay: 0
          NumSamplesProcessed: 600

パスごとの群遅延を詳しく見ていくと、指定された PathDelaysSampleRate の積により、([0 4e-3]*1000) = [0 4] サンプルのパス遅延が生じます。要求されたパス遅延はすべて整数値であるため、実装されたチャネル フィルターによってチャネル出力に超過遅延は追加されず、ChannelFilterDelay フィールドには遅延が 0 サンプルと出力されます。構成に従って、チャネルではパスごとに (PathDelays*SampleRate + ChannelFilterDelay) = ([0 4e-3]*1000 + 0) = [0 4] サンプルに等しい一定の群遅延が発生します。関数grpdelayを使用して、パスごとの群遅延を確認します。

figure
subplot(2,1,1)
grpdelay(Sint.ChannelFilterCoefficients(1,:),1)
title('Integer Path Delay: Group Delay for First Delay Path')
subplot(2,1,2)
grpdelay(Sint.ChannelFilterCoefficients(2,:),1)
title('Integer Path Delay: Group Delay for Second Delay Path')

Figure contains 2 axes objects. Axes object 1 with title Integer Path Delay: Group Delay for First Delay Path, xlabel Normalized Frequency (\times\pi rad/sample), ylabel Group delay (samples) contains an object of type line. Axes object 2 with title Integer Path Delay: Group Delay for Second Delay Path, xlabel Normalized Frequency (\times\pi rad/sample), ylabel Group delay (samples) contains an object of type line.

属性を更新できるようにオブジェクトを解放します。2 番目のパス遅延を非整数値の 1.5e-3 秒に変更します。非整数のパス遅延を使用してフィルターを実装すると、超過群遅延が発生します。オブジェクト関数 info は、情報構造体の ChannelFilterDelay フィールドにこの超過遅延を出力します。オブジェクトの構成と情報を再確認します。

release(rayleighchan)
rayleighchan.PathDelays = [0 1.5e-3]
rayleighchan = 
  comm.RayleighChannel with properties:

             SampleRate: 1000
             PathDelays: [0 0.0015]
       AveragePathGains: [0 0]
     NormalizePathGains: true
    MaximumDopplerShift: 1.0000e-03
        DopplerSpectrum: [1x1 struct]
       ChannelFiltering: true
    PathGainsOutputPort: false

  Use get to show all properties

rayleighchan(data);
Snonint = info(rayleighchan)
Snonint = struct with fields:
    ChannelFilterCoefficients: [2x16 double]
           ChannelFilterDelay: 6
          NumSamplesProcessed: 600

パスごとの群遅延を詳しく見ていくと、指定された PathDelaysSampleRate の積により、([0 1.5e-3]*1000) = [0 1.5] サンプルのパス遅延が生じます。要求されたパス遅延には少なくとも 1 つの非整数値が含まれているため、実装されたチャネル フィルターによってチャネル出力で超過群遅延が発生し、ChannelFilterDelay フィールドには遅延が 6 サンプルと出力されています。構成に従って、チャネルではパスごとに (PathDelays*SampleRate + ChannelFilterDelay) = ([0 1.5e-3]*1000 + 6) = [6 7.5] サンプルに等しい一定の群遅延が発生します。関数grpdelayを使用して、パスごとの群遅延を確認します。

figure
subplot(2,1,1)
grpdelay(Snonint.ChannelFilterCoefficients(1,:),1)
title('Noninteger Path Delay: Group Delay for First Delay Path')
subplot(2,1,2)
grpdelay(Snonint.ChannelFilterCoefficients(2,:),1)
title('Noninteger Path Delay: Group Delay for Second Delay Path')

Figure contains 2 axes objects. Axes object 1 with title Noninteger Path Delay: Group Delay for First Delay Path, xlabel Normalized Frequency (\times\pi rad/sample), ylabel Group delay (samples) contains an object of type line. Axes object 2 with title Noninteger Path Delay: Group Delay for Second Delay Path, xlabel Normalized Frequency (\times\pi rad/sample), ylabel Group delay (samples) contains an object of type line.

オブジェクト関数 info を使用して comm.RicianChannel オブジェクトから情報を取得します。

2 つのパスを含むライス チャネル オブジェクトとそのチャネルを介して渡すデータを作成します。

ricianchan = comm.RicianChannel( ...
    SampleRate=500, ...
    PathDelays=[0 2e-3], ...
    AveragePathGains=[0 0])
ricianchan = 
  comm.RicianChannel with properties:

                SampleRate: 500
                PathDelays: [0 0.0020]
          AveragePathGains: [0 0]
        NormalizePathGains: true
                   KFactor: 3
    DirectPathDopplerShift: 0
    DirectPathInitialPhase: 0
       MaximumDopplerShift: 1.0000e-03
           DopplerSpectrum: [1x1 struct]
          ChannelFiltering: true
       PathGainsOutputPort: false

  Use get to show all properties

data = randi([0 1],600,1);

ライス チャネル オブジェクト情報をチェックします。

info(ricianchan)
ans = struct with fields:
    ChannelFilterCoefficients: [2x2 double]
           ChannelFilterDelay: 0
          NumSamplesProcessed: 0

チャネルを介してデータを渡し、オブジェクト情報を再度チェックして、処理済みのサンプル数が情報構造体に含まれていることを確認します。

ricianchan(data);
Sint = info(ricianchan)
Sint = struct with fields:
    ChannelFilterCoefficients: [2x2 double]
           ChannelFilterDelay: 0
          NumSamplesProcessed: 600

パスごとの群遅延を詳しく見ていくと、指定された PathDelaysSampleRate の積により、([0 2e-3]*500) = [0 1] サンプルのパス遅延が生じます。要求されたパス遅延はすべて整数値であるため、実装されたチャネル フィルターによってチャネル出力に超過遅延は追加されず、ChannelFilterDelay フィールドには遅延が 0 サンプルと出力されます。構成に従って、チャネルではパスごとに (PathDelays*SampleRate + ChannelFilterDelay) = ([0 2e-3]*500 + 0) = [0 1] サンプルに等しい一定の群遅延が発生します。関数grpdelayを使用して、パスごとの群遅延を確認します。

figure
subplot(2,1,1)
grpdelay(Sint.ChannelFilterCoefficients(1,:),1)
title('Integer Path Delay: Group Delay for First Delay Path')
subplot(2,1,2)
grpdelay(Sint.ChannelFilterCoefficients(2,:),1)
title('Integer Path Delay: Group Delay for Second Delay Path')

Figure contains 2 axes objects. Axes object 1 with title Integer Path Delay: Group Delay for First Delay Path, xlabel Normalized Frequency (\times\pi rad/sample), ylabel Group delay (samples) contains an object of type line. Axes object 2 with title Integer Path Delay: Group Delay for Second Delay Path, xlabel Normalized Frequency (\times\pi rad/sample), ylabel Group delay (samples) contains an object of type line.

属性を更新できるようにオブジェクトを解放します。2 番目のパス遅延を非整数値 (2.2e-3 秒など) に変更します。非整数のパス遅延を使用してフィルターを実装すると、超過群遅延が発生します。オブジェクト関数 info は、情報構造体の ChannelFilterDelay フィールドにこの超過遅延を出力します。オブジェクトの構成と情報を再確認します。

release(ricianchan)
ricianchan.PathDelays = [0 2.2e-3];
ricianchan(data);
Snonint = info(ricianchan)
Snonint = struct with fields:
    ChannelFilterCoefficients: [2x16 double]
           ChannelFilterDelay: 6
          NumSamplesProcessed: 600

パスごとの群遅延を詳しく見ていくと、指定された PathDelaysSampleRate の積により、([0 2.2e-3]*500) = [0 1.1] サンプルのパス遅延が生じます。要求されたパス遅延には少なくとも 1 つの非整数値が含まれているため、実装されたチャネル フィルターによってチャネル出力で超過群遅延が発生し、ChannelFilterDelay フィールドには遅延が 6 サンプルと出力されています。ライス チャネルでは、フィルターが対称ではありません。これは、2 番目のパスの群遅延が変動していることによって観測できます。構成に従って、チャネルではパスごとに (PathDelays*SampleRate + ChannelFilterDelay) = ([0 2.2e-3]*500 + 6) = [6 7.1] サンプルを中心に群遅延が発生します。関数grpdelayを使用して、パスごとの群遅延を確認します。

figure
subplot(2,1,1)
grpdelay(Snonint.ChannelFilterCoefficients(1,:),1)
title('Noninteger Path Delay: Group Delay for First Delay Path')
subplot(2,1,2)
grpdelay(Snonint.ChannelFilterCoefficients(2,:),1)
title('Noninteger Path Delay: Group Delay for Second Delay Path')

Figure contains 2 axes objects. Axes object 1 with title Noninteger Path Delay: Group Delay for First Delay Path, xlabel Normalized Frequency (\times\pi rad/sample), ylabel Group delay (samples) contains an object of type line. Axes object 2 with title Noninteger Path Delay: Group Delay for Second Delay Path, xlabel Normalized Frequency (\times\pi rad/sample), ylabel Group delay (samples) contains an object of type line.

オブジェクト関数 info を使用して comm.MIMOChannel オブジェクトから情報を取得します。

1 つのパスを含む MIMO チャネル オブジェクトとそのチャネルを介して渡すデータを作成します。

mimo = comm.MIMOChannel( ...
    SampleRate=1000, ...
    PathDelays=4e-3, ...
    AveragePathGains=0)
mimo = 
  comm.MIMOChannel with properties:

                         SampleRate: 1000
                         PathDelays: 0.0040
                   AveragePathGains: 0
                 NormalizePathGains: true
                 FadingDistribution: 'Rayleigh'
                MaximumDopplerShift: 1.0000e-03
                    DopplerSpectrum: [1x1 struct]
    SpatialCorrelationSpecification: 'Separate Tx Rx'
          TransmitCorrelationMatrix: [2x2 double]
           ReceiveCorrelationMatrix: [2x2 double]
                   AntennaSelection: 'Off'
            NormalizeChannelOutputs: true
                   ChannelFiltering: true
                PathGainsOutputPort: false

  Use get to show all properties

data = randi([0 1],600,2);

MIMO チャネル オブジェクトの情報をチェックします。

info(mimo)
ans = struct with fields:
    ChannelFilterCoefficients: [0 0 0 0 1]
           ChannelFilterDelay: 0
          NumSamplesProcessed: 0

チャネルを介してデータを渡し、オブジェクト情報を再度チェックして、処理済みのサンプル数が情報構造体に含まれていることを確認します。

mimo(data);
Sint = info(mimo)
Sint = struct with fields:
    ChannelFilterCoefficients: [0 0 0 0 1]
           ChannelFilterDelay: 0
          NumSamplesProcessed: 600

群遅延を詳しく見ていくと、指定された PathDelaysSampleRate の積により、(4e-3*1000) = 4 サンプルのパス遅延が生じます。要求されたパス遅延はすべて整数値であるため、実装されたチャネル フィルターによってチャネル出力に超過遅延は追加されず、ChannelFilterDelay フィールドには遅延が 0 サンプルと出力されます。構成に従って、チャネルでは (PathDelays*SampleRate + ChannelFilterDelay) = (4e-3*1000 + 0) = 4 サンプルに等しい一定の群遅延が発生します。関数grpdelayを使用して、整数パス遅延の群遅延を確認します。

grpdelay(Sint.ChannelFilterCoefficients,1)
title('Integer Path Delay: Group Delay')

Figure contains an axes object. The axes object with title Integer Path Delay: Group Delay, xlabel Normalized Frequency ( times pi blank rad/sample), ylabel Group delay (samples) contains an object of type line.

属性を更新できるようにオブジェクトを解放します。パス遅延を非整数値 (2.5e-3 秒など) に変更します。非整数のパス遅延を使用してフィルターを実装すると、超過群遅延が発生します。オブジェクト関数 info は、情報構造体の ChannelFilterDelay フィールドにこの超過遅延を出力します。オブジェクトの構成と情報を再確認します。

release(mimo)
mimo.PathDelays = 2.5e-3
mimo = 
  comm.MIMOChannel with properties:

                         SampleRate: 1000
                         PathDelays: 0.0025
                   AveragePathGains: 0
                 NormalizePathGains: true
                 FadingDistribution: 'Rayleigh'
                MaximumDopplerShift: 1.0000e-03
                    DopplerSpectrum: [1x1 struct]
    SpatialCorrelationSpecification: 'Separate Tx Rx'
          TransmitCorrelationMatrix: [2x2 double]
           ReceiveCorrelationMatrix: [2x2 double]
                   AntennaSelection: 'Off'
            NormalizeChannelOutputs: true
                   ChannelFiltering: true
                PathGainsOutputPort: false

  Use get to show all properties

Snonint = info(mimo)
Snonint = struct with fields:
    ChannelFilterCoefficients: [-0.0326 0.0403 -0.0504 0.0646 -0.0861 0.1238 -0.2101 0.6359 0.6359 -0.2101 0.1238 -0.0861 0.0646 -0.0504 0.0403 -0.0326]
           ChannelFilterDelay: 5
          NumSamplesProcessed: 0

群遅延を詳しく見ていくと、指定された PathDelaysSampleRate の積により、(2.5e-3*1000) = 2.5 サンプルのパス遅延が生じます。要求されたパス遅延には非整数値が含まれているため、実装されたチャネル フィルターによってチャネル出力で超過群遅延が発生し、ChannelFilterDelay フィールドには遅延が 5 サンプルと出力されています。構成に従って、チャネルでは (PathDelays*SampleRate + ChannelFilterDelay) = (2.5e-3*1000 + 5) = 7.5 サンプルに等しい一定の群遅延が発生します。関数grpdelayを使用して、整数パス遅延と非整数パス遅延の群遅延を比較します。

figure
subplot(2,1,1)
grpdelay(Sint.ChannelFilterCoefficients,1)
title('Integer Path Delay: Group Delay')
subplot(2,1,2)
grpdelay(Snonint.ChannelFilterCoefficients,1)
title('Noninteger Path Delay: Group Delay')

Figure contains 2 axes objects. Axes object 1 with title Integer Path Delay: Group Delay, xlabel Normalized Frequency (\times\pi rad/sample), ylabel Group delay (samples) contains an object of type line. Axes object 2 with title Noninteger Path Delay: Group Delay, xlabel Normalized Frequency (\times\pi rad/sample), ylabel Group delay (samples) contains an object of type line.

正弦波加算フェージング手法を使用するように構成された MIMO チャネル System object を使用して、不連続送信のためにチャネル状態が維持されていることを示します。連続チャネル応答に重なる不連続チャネル応答セグメントを観測します。

チャネルのプロパティを設定します。

fs = 1000;               % Sample rate (Hz)
pathDelays = [0 2.5e-3]; % Path delays (s)
pathPower = [0 -6];      % Path power (dB)
fD = 5;                  % Maximum Doppler shift (Hz)
ns = 1000;               % Number of samples
nsdel = 100;             % Number of samples for delayed paths

連続時間範囲と 3 つの不連続時間セグメントを定義します。この上にチャネル応答をプロットして表示します。時刻 0 から開始する 1000 サンプル連続チャネル応答と、時刻 0.1 秒、0.4 秒、および 0.7 秒から開始する 3 つの 100 サンプル連続チャネル応答を別々に表示します。

to0 = 0.0;
to1 = 0.1;
to2 = 0.4;
to3 = 0.7;
t0 = (to0:ns-1)/fs;      % Transmission 0
t1 = to1+(0:nsdel-1)/fs; % Transmission 1
t2 = to2+(0:nsdel-1)/fs; % Transmission 2
t3 = to3+(0:nsdel-1)/fs; % Transmission 3

チャネル フィルター処理を無効化し、1000 Hz のサンプル レート、正弦波加算フェージング手法、および表示するサンプル数を指定して、フラットフェージング 2x2 MIMO チャネル System object を作成します。結果を反復できるように、シードの値を指定します。既定の InitialTime プロパティ設定を使用して、フェージング チャネルが時刻 0 からシミュレーションされるようにします。

mimoChan1 = comm.MIMOChannel('SampleRate',fs, ...
    'MaximumDopplerShift',fD, ...
    'RandomStream','mt19937ar with seed', ...
    'Seed',17, ...
    'FadingTechnique','Sum of sinusoids', ...
    'ChannelFiltering',false, ...
    'NumSamples',ns);

MIMO チャネル System object のクローンを作成します。遅延パスのサンプル数および初期時間のソースを変更し、System object を呼び出す際にフェージング チャネルのオフセット時間を入力引数として指定できるようにします。

mimoChan2 = clone(mimoChan1);
mimoChan2.InitialTimeSource = 'Input port';
mimoChan2.NumSamples = nsdel;

mimoChan1 オブジェクトを使用して連続チャネル応答のパス ゲイン出力を保存し、初期時間オフセットを入力引数として指定した mimoChan2 オブジェクトを使用して、不連続遅延チャネル応答のパス ゲイン出力を保存します。

pg0 = mimoChan1();
pg1 = mimoChan2(to1);
pg2 = mimoChan2(to2);
pg3 = mimoChan2(to3);

info メソッドを使用して、2 つのチャネルによって処理されたサンプル数を比較します。結果は mimoChan1 が 1000 サンプルを処理したことを、mimoChan2 が 300 サンプルしか処理していないことを示しています。

G = info(mimoChan1);
H = info(mimoChan2);
[G.NumSamplesProcessed H.NumSamplesProcessed]
ans = 1×2

        1000         300

最初の送信アンテナと最初の受信アンテナに対応するパスについて、パス ゲインをデシベルに変換します。

pathGain0 = 20*log10(abs(pg0(:,1,1,1)));
pathGain1 = 20*log10(abs(pg1(:,1,1,1)));
pathGain2 = 20*log10(abs(pg2(:,1,1,1)));
pathGain3 = 20*log10(abs(pg3(:,1,1,1)));

連続的な場合と非連続的な場合のパス ゲインをプロットします。結果は、3 つのセグメントのゲインが、連続的な場合のゲインに一致していることを示しています。2 つの一致は、正弦波の和の手法は、データが送信されていない場合でもチャネル特性が保たれるため、パケット化されたデータのシミュレーションに最適であることを示しています。

plot(t0,pathGain0,'r--')
hold on
plot(t1,pathGain1,'b')
plot(t2,pathGain2,'b')
plot(t3,pathGain3,'b')
grid
title('Continuous and Discontinuous Channel Response')
xlabel('Time (sec)')
ylabel('Path Gain (dB)')
legend('Continuous','Discontinuous','location','nw')

Figure contains an axes object. The axes object with title Continuous and Discontinuous Channel Response, xlabel Time (sec), ylabel Path Gain (dB) contains 4 objects of type line. These objects represent Continuous, Discontinuous.

入力引数

すべて折りたたむ

情報を取得する System object。comm.MIMOChannelcomm.RayleighChannel、または comm.RicianChannel System object として指定します。

出力引数

すべて折りたたむ

System object に関する情報をもつ、以下のフィールドを含む構造体。

サンプル単位の超過フィルター遅延。正の整数として返されます。

  • チャネル オブジェクトの PathDelays プロパティをすべて整数値の遅延で構成した場合、実装されたチャネル フィルターによってチャネル出力に超過遅延は追加されません。この場合、ChannelFilterDelay フィールドには超過パス遅延が 0 と出力されます。

  • チャネル オブジェクトの PathDelays プロパティを整数値以外の遅延で構成した場合、実装されたチャネル フィルターによってチャネル出力に超過遅延が追加される可能性があります。この場合、ChannelFilterDelay フィールドには、超過パス遅延として非ゼロの値が出力される可能性があります。

チャネル フィルター係数。行列として返されます。この非変動フィルターに、時間とともに変化するパス ゲインがゲインとして適用され、時間の経過とともにチャネル出力が生成されます。

前回のリセット以降にチャネル オブジェクトによって処理されたサンプル数。正の整数として返されます。

最後のフレームの終了時間 (秒)。正のスカラーとして返されます。この値を使用して、シミュレーション時間を確認します。

依存関係

このプロパティは、FadingTechnique プロパティが 'Sum of sinusoids'InitialTimeSource プロパティが 'Input port' である場合に適用されます。

バージョン履歴

R2012a で導入