matlab-generate-wlan-waveform について
デバイステスト、リンクレベルシミュレーション、信号解析向けに、IEEE 802.11準拠のWLAN IQ波形を生成する MATLAB スキルです。PHY設定、ペイロード長の調整、波形生成と描画を扱い、OFDMAやMU-MIMOにも対応します。
主な機能
- 01複数世代のIEEE 802.11 PHY形式
- 02帯域幅、MCS、空間ストリームの設定
- 03目標時間に合わせたペイロード長調整
- 04MACフレームまたはランダムビットの作成
- 05IQ波形の生成と描画
活用シーン
- 01デバイステスト用Wi-Fi波形の生成
- 02リンクレベルシミュレーションの送信部作成
- 03OFDMAリソースユニット割り当ての設定
- 04指定時間のパケット作成
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ matlab/ matlab-agentic-toolkit --skill matlab-generate-wlan-waveformインストール後、Claude Code で/matlab-generate-wlan-waveformを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
manifest.yamlreferences/documentation-links.mdeht-allocation-indices.mdhe-allocation-indices.mdmac-frame-properties.mdmulti-packet-waveforms.mdtrigger-based-uplink.mduhr-waveform-generation.md詳細
WLAN 波形の生成
デバイスのテスト、リンクレベルシミュレーション、または信号解析に使用する、標準準拠の IEEE 802.11 波形を生成します。このスキルでは送信チェーンを扱います。PHY 形式の設定、ペイロードサイズの決定、時間領域 IQ 波形の生成、プロットを行います。
使用する場面
- あらゆる 802.11 規格の WLAN/Wi-Fi テスト波形を生成する場合
- リンクレベルシミュレーションの送信側を作成する場合
- 特定の MAC フレームタイプ(Data、Block Ack、Beacon など)を含むパケットを構築する場合
- OFDMA リソースユニットの割り当て(HE-MU、EHT-MU、UHR-MU)を設定する場合
- MU-MIMO 送信(VHT、HE、EHT、UHR)を設定する場合
- UHR の機能を使用する場合:UEQM(ストリームごとの MCS)、DRU、LDPC2x、ELR(拡張長距離)
- 特定のパケット持続時間または送信時間を指定する場合
使用しない場面
- チャネルモデリング、受信処理、EVM/スペクトルマスク(対象外)
- WLAN 以外の波形(5G NR、LTE、Bluetooth)
UHR(802.11bn)には R2026a 以降が必要です。 ユーザーが UHR 波形を要求していて、使用中のリリースがそれより古い場合は、UHR のサポートが R2026a で導入されたことを伝え、アップグレードを勧めてください。
ワークフロー
すべての波形生成は、次のパイプラインに従います。
- 形式を選択する → 設定オブジェクトを作成します(「形式の選択」を参照)
- PHY を設定する → 帯域幅、MCS、空間ストリーム、アンテナを設定します
- ペイロードサイズを決める → PSDU/APEP の長さを直接設定するか、目標持続時間から設定します
- ペイロードビットを作成する → ランダムビットまたは
wlanMACFrameによる MAC フレームを使用します - 波形を生成する →
wlanWaveformGenerator(bits, cfg) - プロットして確認する → 時間領域の振幅を確認し、HE/EHT/UHR の設定では
showAllocationを使用します
形式の選択
| 規格 | マーケティング名 | 設定オブジェクト | 用途 |
|---|---|---|---|
| 802.11b | Wi-Fi 1 | wlanNonHTConfig(DSSS) | SU のみ |
| 802.11a/g | Wi-Fi 1/3 | wlanNonHTConfig | SU のみ |
| 802.11n | Wi-Fi 4 | wlanHTConfig | SU のみ |
| 802.11ac | Wi-Fi 5 | wlanVHTConfig | SU または MU-MIMO |
| 802.11ax | Wi-Fi 6 | wlanHESUConfig | SU のみ |
| 802.11ax | Wi-Fi 6 | wlanHESUConfig(ExtendedRange) | SU — 拡張範囲 |
| 802.11ax | Wi-Fi 6 | wlanHEMUConfig(allocIdx) | OFDMA および/または MU-MIMO |
| 802.11ax | Wi-Fi 6 | wlanHETBConfig | SU アップリンク(トリガーベース) |
| 802.11be | Wi-Fi 7 | wlanEHTMUConfig(allocIdx) | OFDMA および/または MU-MIMO/MRU |
| 802.11be | Wi-Fi 7 | wlanEHTMUConfig("CBW...") | 非 OFDMA MU-MIMO(全帯域 RU) |
| 802.11be | Wi-Fi 7 | wlanEHTMUConfig("CBW...", EHTDUPMode=true) | SU — DUP モード(MCS 14 のみ) |
| 802.11be | Wi-Fi 7 | wlanEHTTBConfig | SU アップリンク(トリガーベース) |
| 802.11bn | Wi-Fi 8 | uhrMUConfig(allocIdx) | OFDMA/MU-MIMO/UEQM(サンプルヘルパー) |
| 802.11bn | Wi-Fi 8 | uhrMUConfig("CBW...") | 非 OFDMA MU-MIMO(サンプルヘルパー) |
| 802.11bn | Wi-Fi 8 | uhrTBConfig | SU アップリンク/DRU(サンプルヘルパー) |
| 802.11bn | Wi-Fi 8 | uhrELRConfig | SU 拡張長距離(サンプルヘルパー) |
OFDMA 形式(HE-MU、EHT-MU)では、コンストラクターに指定するのは RU サイズではなく割り当てインデックスです。references/he-allocation-indices.md および references/eht-allocation-indices.md を参照してください。
UHR(802.11bn/Wi-Fi 8)では、組み込みのツールボックスオブジェクトではなく、サンプルヘルパーファイルを使用します。 setupExample("wlan/UHRParameterizationExample", scriptFolder) を使って、ヘルパーをスクリプトの作業フォルダーにコピーしてください。UHR は UEQM(ストリームごとの MCS)、DRU、LDPC2x、ELR(拡張長距離)、および新しい MCS 値(15~23)をサポートします。割り当てインデックスは EHT と同じです。references/uhr-waveform-generation.md を参照してください。
形式ごとの制約(割り当てインデックスの方式、HT MCS の符号化、DSSS の特性)については、重要なルールを参照してください。
EHT DUP モードでは、堅牢なカバレッジを実現するため、サブチャネル間で信号を複製します。作成時に wlanEHTMUConfig("CBW80", EHTDUPMode=true) のように設定します。制約:MCS 14(BPSK-DCM)のみ、シングルユーザー、空間ストリーム 1 本、パンクチャリングなし、80/160/320 MHz。EHTDUPMode は作成後に変更できません。
送信時間の指定
目標送信時間からペイロードサイズを計算します。すべての値は整数のマイクロ秒です。
| Config | Function | Example |
|---|---|---|
wlanNonHTConfig | wlanPSDULength(cfg, 'TxTime', us) | cfg.PSDULength = wlanPSDULength(cfg, 'TxTime', 500); |
wlanHTConfig | wlanPSDULength(cfg, 'TxTime', us) | cfg.PSDULength = wlanPSDULength(cfg, 'TxTime', 1000); |
wlanVHTConfig(SU のみ) | wlanAPEPLength(cfg, 'TxTime', us) | cfg.APEPLength = wlanAPEPLength(cfg, 'TxTime', 2000); |
wlanHESUConfig | wlanAPEPLength(cfg, 'TxTime', us) | cfg.APEPLength = wlanAPEPLength(cfg, 'TxTime', 3000); |
wlanEHTMUConfig(SU、非 OFDMA) | wlanAPEPLength(cfg, 'TxTime', us) | cfg.User{1}.APEPLength = wlanAPEPLength(cfg, 'TxTime', 1000); |
| 任意の MU/OFDMA 構成 | 反復する transmitTime ループ | 以下を参照 — wlanAPEPLength は MU/OFDMA でエラーになります |
送信時間の引数は秒ではなく整数のマイクロ秒です。 2e-3 ではなく 2000 を渡します。
MU の送信時間の指定(反復処理)
任意の MU 構成(同質のユーザー — 同じ MCS、RU サイズ、空間ストリーム)の場合:
targetDuration = 1e-3; apepLen = 2000; % initial guess
for iter = 1:10
for u = 1:numUsers, cfg.User{u}.APEPLength = apepLen; end
txTime = transmitTime(cfg);
if abs(txTime - targetDuration)/targetDuration < 0.01, break; end
apepLen = round(apepLen * targetDuration / txTime);
end
異種ユーザー(MCS/RU/STS が異なる場合): 最も容量の低いユーザーが送信時間を決定します。
トラフィック需要に基づいてユーザーごとに APEPLength を設定し、transmitTime(cfg) を使用します。
PSDU 長の取得
PSDU 長の取得方法はフォーマットによって異なります。誤ったパターンを使用するとエラーになります。
| Config | PSDU 長の取得方法 | Notes |
|---|---|---|
wlanNonHTConfig | cfg.PSDULength | 設定可能なプロパティ |
wlanHTConfig | cfg.PSDULength | 設定可能なプロパティ |
wlanVHTConfig | cfg.PSDULength | 読み取り専用プロパティ(APEPLength から算出)。MU ではベクトルです。 |
wlanHESUConfig | getPSDULength(cfg) | メソッド呼び出しです。プロパティではありません。 |
wlanHEMUConfig | getPSDULength(cfg) | メソッド呼び出しです。ベクトル(ユーザーごとに 1 つ)を返します。 |
wlanHETBConfig | getPSDULength(cfg) | メソッド呼び出しです。HE-SU/HE-MU と同じです。 |
wlanEHTMUConfig | psduLength(cfg) | HE とはメソッド名が異なります。ベクトルを返します。 |
wlanEHTTBConfig | psduLength(cfg) | EHT-MU と同じメソッド名です。 |
getPSDULength と psduLength は互換ではありません。 HE では
getPSDULength を使用します。EHT では psduLength を使用します。
主な関数
| Function | Purpose |
|---|---|
wlanWaveformGenerator(bits, cfg) | 時間領域の IQ 波形を生成します |
wlanSampleRate(cfg) | 構成のサンプルレートを取得します — 常にこれを使用してください |
wlanHETBConfig | HE トリガーベースのアップリンク(単一 STA)を構成します |
wlanEHTTBConfig | EHT トリガーベースのアップリンク(単一 STA)を構成します |
wlanMACFrame(payload, cfgMAC) | MAC フレームのビットを生成します(references/mac-frame-properties.md を参照) |
wlanAPEPLength(cfg, 'TxTime', us) | 目標送信時間に対する APEP 長(VHT-SU、HE-SU、EHT-MU の単一ユーザー) |
wlanPSDULength(cfg, 'TxTime', us) | 目標送信時間に対する PSDU 長(NonHT/HT) |
transmitTime(cfg) または transmitTime(cfg, 'microseconds') | 送信時間を取得します — * 1e6 の代わりに単位引数を使用してください |
showAllocation(cfg) または showAllocation(cfg, ax) | RU 割り当てをプロットします — tiledlayout に埋め込むには axes ハンドルを渡します |
ruInfo(cfg) | RU サイズ、インデックス、ユーザー数を照会します |
プロパティ名の確認、構成オブジェクトで有効な値の確認、またはこのスキルで扱っていないパラメーターの検索が必要な場合は、references/documentation-links.md にあるオンラインドキュメントへのリンクを参照してください。
パターン
目標送信時間を指定したシングルユーザー波形
cfg = wlanVHTConfig;
cfg.ChannelBandwidth = 'CBW80';
cfg.MCS = 9;
cfg.NumTransmitAntennas = 4;
cfg.NumSpaceTimeStreams = 4;
cfg.SpatialMapping = 'Fourier';
% Size payload for 2 ms transmit time
cfg.APEPLength = wlanAPEPLength(cfg, 'TxTime', 2000);
% Generate waveform: 3 packets, 20 us idle
psduBits = randi([0 1], cfg.PSDULength * 8, 1);
waveform = wlanWaveformGenerator(psduBits, cfg, ...
'NumPackets', 3, 'IdleTime', 20e-6);
fs = wlanSampleRate(cfg);
DSSS(802.11b)波形
cfg = wlanNonHTConfig;
cfg.Modulation = 'DSSS';
cfg.DataRate = '11Mbps'; % '1Mbps', '2Mbps', '5.5Mbps', or '11Mbps'
cfg.PSDULength = 1000;
psduBits = randi([0 1], cfg.PSDULength * 8, 1);
waveform = wlanWaveformGenerator(psduBits, cfg);
fs = wlanSampleRate(cfg); % 11 MHz (chip rate)
HE-MU OFDMA 波形
OFDMA の場合、コンストラクターには 20 MHz サブチャネルごとの割り当てインデックスを指定します。 インデックスと RU の対応の全容については、references/he-allocation-indices.md を参照してください。
% 80 MHz, four 242-tone RUs (index 192 = one 242-tone RU per subchannel)
cfg = wlanHEMUConfig([192 192 192 192]);
cfg.NumTransmitAntennas = 4;
% Configure per-user parameters
for u = 1:4
cfg.User{u}.MCS = u + 6; % MCS 7, 8, 9, 10
cfg.User{u}.NumSpaceTimeStreams = 1;
cfg.User{u}.APEPLength = 4000;
cfg.User{u}.ChannelCoding = 'LDPC';
end
% Use Fourier spatial mapping when NumSTS < NumTransmitAntennas per RU
for r = 1:numel(cfg.RU)
cfg.RU{r}.SpatialMapping = 'Fourier';
end
% Generate PSDU bits per user
psduLen = getPSDULength(cfg);
txData = cell(1, numel(psduLen));
for u = 1:numel(psduLen)
txData{u} = randi([0 1], psduLen(u) * 8, 1);
end
waveform = wlanWaveformGenerator(txData, cfg);
showAllocation(cfg);
一般的な HE 割り当てインデックス(20 MHz サブチャネルごと):
| インデックス | RU レイアウト | ユーザー数 |
|---|---|---|
| 0 | 26 トーン×9 | 9 |
| 96 | 106 トーン×2 | 2 |
| 112 | 52 トーン×4 | 4 |
| 192 | 242 トーン×1 | 1 |
| 193 | 242 トーン×1 | 2(MU-MIMO) |
| 200 | 484 トーン×1(40 MHz ペア) | 1 |
| 208 | 996 トーン×1(80 MHz クアッド) | 1 |
40 MHz の場合はインデックスを 2 個、80 MHz の場合は 4 個、160 MHz の場合は 8 個指定します。
EHT-MU OFDMA 波形(MRU を使用)
EHT 割り当てインデックスは、1 人のユーザーに割り当てる非連続トーンブロックである複数リソースユニット(MRU)に対応しています。対応の全容については、references/eht-allocation-indices.md を参照してください。
% 80 MHz: 484+242 MRU on subchannels 1-3, 106+26+106 on subchannel 4
% Index 120 = 484+242 MRU (1 MU-MIMO user), 29/28 = continuation, 25 = 106+26+106
cfg = wlanEHTMUConfig([120 29 28 25]);
cfg.NumTransmitAntennas = 2;
% Set APEPLength appropriate to RU size (26-tone RUs have low throughput)
apepPerUser = [2000, 500, 100, 500]; % MRU, 106-tone, 26-tone, 106-tone
mcsPerUser = [7, 4, 2, 4];
for u = 1:numel(cfg.User)
cfg.User{u}.APEPLength = apepPerUser(u);
cfg.User{u}.MCS = mcsPerUser(u);
cfg.User{u}.NumSpaceTimeStreams = 1;
cfg.User{u}.ChannelCoding = 'LDPC';
end
for r = 1:numel(cfg.RU)
cfg.RU{r}.SpatialMapping = 'Fourier';
end
% EHT uses psduLength(), NOT getPSDULength()
psduLens = psduLength(cfg);
txData = cell(1, numel(psduLens));
for u = 1:numel(psduLens)
txData{u} = randi([0 1], psduLens(u) * 8, 1);
end
waveform = wlanWaveformGenerator(txData, cfg);
showAllocation(cfg);
EHT 継続インデックス: RU が複数の 20 MHz サブチャネルにまたがる場合、追加のサブチャネルには継続インデックスを使用します。
- 28 — サブチャネルが、より大きな 242 トーン割り当ての一部である場合
- 29 — サブチャネルが、484 トーン割り当ての一部である場合
- 30 — サブチャネルが、996 トーン割り当ての一部である場合
VHT MU-MIMO 波形
cfg = wlanVHTConfig;
cfg.ChannelBandwidth = 'CBW80';
cfg.NumUsers = 2;
cfg.NumTransmitAntennas = 4;
cfg.NumSpaceTimeStreams = [2 2];
cfg.MCS = [8 8];
cfg.APEPLength = [1024 1024];
cfg.GroupID = 2; % MU-MIMO: must be 1-62
cfg.SpatialMapping = 'Fourier'; % Required when total STS < NumTxAntennas
psduLen = cfg.PSDULength; % Read-only vector for MU
txData = cell(1, cfg.NumUsers);
for u = 1:cfg.NumUsers
txData{u} = randi([0 1], psduLen(u) * 8, 1);
end
waveform = wlanWaveformGenerator(txData, cfg);
非 OFDMA MU-MIMO 波形(EHT および HE)
ユーザーがOFDMA を使用しない MU-MIMO(すべてのユーザーが単一の全帯域幅 RU を共有)を要求した場合は、次のパターンを使用します。ユーザーが「MU-MIMO」とだけ述べ、OFDMA や複数の RU に言及していない場合は、非 OFDMA を既定とします。
EHT — 文字列コンストラクターを使用します(割り当てインデックスは不要です)。
% 80 MHz, 2 MU-MIMO users on a single 996-tone RU (non-OFDMA)
cfg = wlanEHTMUConfig("CBW80", NumUsers=2);
cfg.NumTransmitAntennas = 4;
cfg.User{1}.NumSpaceTimeStreams = 2;
cfg.User{1}.MCS = 9;
cfg.User{1}.APEPLength = 4000;
cfg.User{1}.ChannelCoding = 'LDPC';
cfg.User{2}.NumSpaceTimeStreams = 2;
cfg.User{2}.MCS = 7;
cfg.User{2}.APEPLength = 4000;
cfg.User{2}.ChannelCoding = 'LDPC';
cfg.RU{1}.SpatialMapping = 'Fourier';
psduLens = psduLength(cfg);
txData = cell(1, numel(psduLens));
for u = 1:numel(psduLens)
txData{u} = randi([0 1], psduLens(u) * 8, 1);
end
waveform = wlanWaveformGenerator(txData, cfg);
有効な帯域幅は、"CBW20"、"CBW40"、"CBW80"、"CBW160"、"CBW320" です。
最大 8 ユーザーまで対応します。PuncturedChannelFieldValue によるパンクチャリングに対応しています。
HE — 文字列コンストラクターはありません。全帯域幅の割り当てインデックスを使用します。
| 帯域幅 | N ユーザーのインデックス | ゼロユーザーのインデックス |
|---|---|---|
| 20 MHz | 192 + N - 1 | 該当なし |
| 40 MHz | [200 + N - 1, 114] | 114 |
| 80 MHz | [208 + N - 1, 115, 115, 115] | 115 |
| 160 MHz | [216 + N - 1, 115, 115, 115, 115, 115, 115, 115] | 115 |
上記の EHT と同じ、ユーザーごと/RU ごとのパターンに従い、psduLength(cfg) の代わりに getPSDULength(cfg) を使用します。例:80 MHz、2 ユーザーの場合は cfg = wlanHEMUConfig([209 115 115 115]) です。
MAC フレームのペイロード
以下については、references/mac-frame-properties.md を参照してください。
- 引数の順序、ペイロード形式(16 進オクテット)、PHY 設定の要件
- フレームタイプ、プロパティ、アグリゲーション(A-MSDU、A-MPDU)
- よくある間違いと呼び出し規約
複数パケットの波形
以下については、references/multi-packet-waveforms.md を参照してください。
wlanMSDULengths(uint8 MSDU のセル配列)を使用した A-MPDU アグリゲーション- 複数パケットの波形 — 同一形式(
NumPackets、IdleTime)または異なる形式を、SIFS/DIFS/PIFS の間隔で連結
クイックリファレンス — フレーム間隔:SIFS=16 μs、DIFS=34 μs、PIFS=25 μs。
トリガーベース(TB)アップリンク
以下については、references/trigger-based-uplink.md を参照してください。
- HE TB(
wlanHETBConfig)、EHT TB(wlanEHTTBConfig)、UHR TB(uhrTBConfig) ruInfo(cfgMU)によるRUSize/RUIndex、LTF シンボル、OversamplingFactor- UHR DRU — DBW/RU サイズのルールに基づく分散リソースユニット
規約
- 波形を生成した後は、ユーザーから具体的な指示がない限り、次の操作を行ってください。
- 波形変数名、サイズ、サンプルレートをユーザーに伝えます
- 時間軸をミリ秒で示して、時間領域の波形の振幅をプロットします
- HE、EHT、または UHR の設定では、
showAllocation(cfg)を呼び出します - 生成コードを
matlab-create-live-scriptスキル形式(%[text]マークアップ、%%セクション、必須の付録)を使って、プレーンテキストの Live Code.mファイルとして保存します。edit('scriptName.m')でエディターで開きます。
- UHR スクリプトでは作業フォルダーを使用します。
setupExampleでヘルパーをスクリプトと同じフォルダーにコピーしてください。詳細は references/uhr-waveform-generation.md を参照してください。 - 単一ユーザーのペイロードはプレーンな列ベクトルです。セル配列を使うのは複数ユーザーの場合のみです。
wlanWaveformGenerator({bits}, cfg)ではなく、wlanWaveformGenerator(bits, cfg)を使います。 - 常に
wlanSampleRate(cfg)を使ってください。値をハードコードしないでください。UHR の設定ではwlanSampleRate(cfg.ChannelBandwidth)を使います(UHR オブジェクトはまだサポートされていません)。 - OFDMA の帯域幅は読み取り専用です。割り当てインデックスベクトルの長さから推定されます(1→20、2→40、4→80、8→160 MHz)。
- 単位:
IdleTimeは秒単位(20e-6)です。時間関数は整数のマイクロ秒単位(2000)です。OversamplingFactorはwlanSampleRateに乗算されます。transmitTime(cfg, 'microseconds')のように、表示には単位引数を使い、* 1e6は使いません。有効な単位は'seconds'、'milliseconds'、'microseconds'、'nanoseconds'です。 - 複数ユーザーの設定は
ruInfo(cfg)で検証してください。OFDMA または MU-MIMO の設定を構築した後は必ずruInfoを呼び出し、NumUsers、NumUsersPerRU、RUSizesが指定した内容と一致することを確認します。割り当てインデックスが誤っていると、ユーザー数が誤っていても警告なしに処理されます。 - ruInfo: HE は数値配列を返します。EHT はセル配列を返します(MRU をサポート)。
- プロット:
subplotではなく、tiledlayout/nexttileを使います。showAllocation(cfg, ax)を使うと、既存のレイアウトに埋め込めます。
重要なルール
以下の制約は、最も多くのエラーの原因になります。wlanWaveformGenerator を呼び出す前に確認してください。
PSDU 長を取得する方法はフォーマットによって異なります
誤ったアクセサーを使うと、"Undefined function" エラーが発生したり、警告なしに誤った結果になったりします。
| フォーマット | PSDU 長の取得方法 | 誤った方法 |
|---|---|---|
| Non-HT、HT | cfg.PSDULength(プロパティ) | getPSDULength(cfg) — エラーになります |
| VHT | cfg.PSDULength(読み取り専用) | 値の設定 — エラーになります |
| HE-SU、HE-MU、HE-TB | getPSDULength(cfg) | psduLength(cfg) — エラーになります |
| EHT-MU、EHT-TB | psduLength(cfg) | getPSDULength(cfg) — エラーになります |
割り当てインデックスは RU サイズではありません
wlanHEMUConfig(242) は無効です。242 トーンの RU には wlanHEMUConfig(192) を使います。wlanEHTMUConfig(242) も無効です。wlanEHTMUConfig(64) を使ってください。必ず割り当てインデックスの参照表を確認してください。
HE と EHT ではインデックス方式がまったく異なります。 242 トーンの RU は、HE ではインデックス 192、EHT ではインデックス 64 です。混同しないでください。
HE-MU の複数サブチャネル RU インデックスは、コンテンツチャネルあたりのユーザー数を示します。詳細は references/he-allocation-indices.md を参照してください。
プリアンブルのパンクチャリングと STAID=2046 の違い
| 目的 | HE | EHT(OFDMA) | EHT(非 OFDMA) |
|---|---|---|---|
| サブチャネル全体をパンクチャする | 割り当てインデックス 113 | 割り当てインデックス 26 | 構築時に PuncturedChannelFieldValue を指定 |
| ユーザーデータのみを無効にする | STAID=2046 | STAID=2046 | — |
STAID=2046 はパンクチャリングを行いません。1 ユーザーのデータを無効にするだけです。
非 OFDMA のパンクチャリングでは PuncturedChannelFieldValue を使います(80 MHz の場合は 1~4 で、サブチャネル 1~4 に対応します)。構築時に設定する必要があります。
wlanEHTMUConfig("CBW80", NumUsers=2, PuncturedChannelFieldValue=3)
空間マッピングのルール
NumSpaceTimeStreams < NumTransmitAntennas per RU → SpatialMapping = 'Fourier'
NumSpaceTimeStreams == NumTransmitAntennas → SpatialMapping = 'Direct'
STS がアンテナ数より少ない場合に 'Direct' を使うと、次元不一致エラーが発生します。
MU-MIMO では非 OFDMA がデフォルトです
ユーザーが OFDMA や複数の RU に言及せずに「MU-MIMO」と述べた場合は、 非 OFDMA(全ユーザーで共有する単一の全帯域幅 RU)をデフォルトにします。
- EHT:
wlanEHTMUConfig("CBW80", NumUsers=N) - HE: 全帯域幅割り当てインデックス(Patterns セクションを参照)
ruInfo から取得するトリガーベースの RUIndex
TB 設定の RUIndex 値は、連番の RU 番号ではなく、
ruInfo(cfgMU).RUIndices に含まれるサブキャリアベースの位置です。誤った
インデックスを使うと、サブキャリアの重複エラーが発生します。
コンストラクターでのみ設定できるプロパティ
wlanEHTMUConfig の EHTDUPMode、PuncturedChannelFieldValue、および NumUsers は
構築後に読み取り専用です。コンストラクターで名前と値のペアとして渡してください。完全な一覧と例については、references/eht-allocation-indices.md
を参照してください。
フォーマット固有の制約
| 制約 | 詳細 |
|---|---|
| HT MCS はストリーム数を示します | MCS 0-7 = 1 SS、8-15 = 2 SS、16-23 = 3 SS、24-31 = 4 SS です。NumSpaceTimeStreams = floor(MCS/8) + 1 を設定してください。 |
| DSSS には OFDM プロパティがありません | DataRate('1Mbps'...'11Mbps')を使用してください。ChannelBandwidth、MCS、NumTransmitAntennas、NumSpaceTimeStreams はありません。 |
| HE ER + Upper106ToneRU | MCS は 0 に制限されます。242 トーンの ER バリアントでは MCS 0-2 が使用できます。 |
| VHT GroupID | 0/63 = SU。1-62 = MU-MIMO。誤った値でもエラーにならずに受け入れられます。 |
wlanAPEPLength は SU のみ対応 | VHT-SU、HE-SU、および EHT-MU のシングルユーザー(非 OFDMA)で動作します。MU/OFDMA 設定ではエラーになります。反復的な transmitTime ループを使用してください。 |
| IEEE のバージョンを捏造しないでください | WLAN Toolbox Release Notes を案内してください。 |
Copyright 2026 The MathWorks, Inc.