info
フェージング チャネル オブジェクトの特性情報
説明
例
comm.RayleighChannel 情報の取得
オブジェクト関数 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
パスごとの群遅延を詳しく見ていくと、指定された PathDelays
と SampleRate
の積により、([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')
属性を更新できるようにオブジェクトを解放します。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
パスごとの群遅延を詳しく見ていくと、指定された PathDelays
と SampleRate
の積により、([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')
comm.RicianChannel 情報の取得
オブジェクト関数 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
パスごとの群遅延を詳しく見ていくと、指定された PathDelays
と SampleRate
の積により、([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')
属性を更新できるようにオブジェクトを解放します。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
パスごとの群遅延を詳しく見ていくと、指定された PathDelays
と SampleRate
の積により、([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')
comm.MIMOChannel 情報の取得
オブジェクト関数 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
群遅延を詳しく見ていくと、指定された PathDelays
と SampleRate
の積により、(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')
属性を更新できるようにオブジェクトを解放します。パス遅延を非整数値 (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
群遅延を詳しく見ていくと、指定された PathDelays
と SampleRate
の積により、(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')
正弦波の和の手法を使用して MIMO チャネルをモデル化する
正弦波加算フェージング手法を使用するように構成された 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')
入力引数
obj
— 情報を取得する System object
System object
情報を取得する System object。comm.MIMOChannel
、comm.RayleighChannel
、または comm.RicianChannel
System object として指定します。
出力引数
S
— オブジェクト情報が格納される構造体
構造体
System object に関する情報をもつ、以下のフィールドを含む構造体。
ChannelFilterDelay
— 超過フィルター遅延
正の整数
サンプル単位の超過フィルター遅延。正の整数として返されます。
チャネル オブジェクトの
PathDelays
プロパティをすべて整数値の遅延で構成した場合、実装されたチャネル フィルターによってチャネル出力に超過遅延は追加されません。この場合、ChannelFilterDelay
フィールドには超過パス遅延が0
と出力されます。チャネル オブジェクトの
PathDelays
プロパティを整数値以外の遅延で構成した場合、実装されたチャネル フィルターによってチャネル出力に超過遅延が追加される可能性があります。この場合、ChannelFilterDelay
フィールドには、超過パス遅延として非ゼロの値が出力される可能性があります。
ChannelFilterCoefficients
— チャネル フィルター係数
行列
チャネル フィルター係数。行列として返されます。この非変動フィルターに、時間とともに変化するパス ゲインがゲインとして適用され、時間の経過とともにチャネル出力が生成されます。
NumSamplesProcessed
— チャネル オブジェクトによって処理されるサンプルの数
正の整数
前回のリセット以降にチャネル オブジェクトによって処理されたサンプル数。正の整数として返されます。
LastFrameTime
— 最後のフレームの終了時間
正のスカラー
最後のフレームの終了時間 (秒)。正のスカラーとして返されます。この値を使用して、シミュレーション時間を確認します。
依存関係
このプロパティは、FadingTechnique
プロパティが 'Sum of sinusoids'
、InitialTimeSource
プロパティが 'Input port'
である場合に適用されます。
バージョン履歴
R2012a で導入
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)