信号のスペクトル解析
この例では、信号のスペクトル解析を行う方法を説明します。ファイルに記録されたデータを使用するか、RTL-SDR 無線機、ADALM-PLUTO 無線機、または USRP™ 無線機を使用してリアルタイムに信号を受信することができます。ラジオの中心周波数を変更して、信号が存在する帯域にラジオを同調できます。その後、スペクトル アナライザーを使用して、受信したスペクトルを表示および測定できます。
この例の Simulink® 実装については、Simulink での信号のスペクトル解析を参照してください。
必要なソフトウェアとハードウェア
既定では、この例はファイルに記録されているデータを使用して実行します。オプションとして、無線経由で信号を受信できます。このためには、次のいずれかも必要になります。
RTL-SDR 無線機と Communications Toolbox Support Package for RTL-SDR Radio
ADALM-PLUTO 無線機と Communications Toolbox Support Package for ADALM-PLUTO Radio
USRP N2xx または B2xx シリーズ無線機と Communications Toolbox Support Package for USRP Radio。サポートされている無線機の詳細については、サポートされているハードウェアと必要なソフトウェアを参照してください。
USRP E3xx、N3xx、X3xx、または X4xx シリーズ無線機と Wireless Testbench Support Package for NI USRP Radios。サポートされている無線機の詳細については、Supported Radio Devices (Wireless Testbench)を参照してください。
コード例
受信機は、ユーザーの入力を求めて、変数を初期化します。次にループで、信号ソースと FM ブロードキャスト受信機を呼び出します。また、このループは、フレーム時間を使用して無線時間を追跡し、さらに信号のソースによって報告された失われたサンプルを追跡します。
既定の設定を変更するオプションを有効にするには、|cmdlineInput| を 1 に設定します。
cmdlineInput =false; if cmdlineInput % Request user input from the command-line for application parameters userInput = helperSpectralAnalysisUserInput; % Set initial parameters [SAParams, sigSrc] = helperSpectralAnalysisConfig(userInput); else % Set initial parameters load defaultInputSpecAnalysis.mat [SAParams, sigSrc] = helperSpectralAnalysisConfig; end
設定
spectrumAnalyzer オブジェクトを作成し、ユーザー入力に基づいて構成します。
hSpectrum = spectrumAnalyzer(... 'Name', 'Passband Spectrum',... 'Title', 'Passband Spectrum', ... 'Method', 'Welch', ... 'SpectrumType', 'Power density', ... 'FrequencySpan', 'Full', ... 'SampleRate', SAParams.FrontEndSampleRate, ... 'FrequencyOffset', SAParams.CenterFrequency, ... 'YLimits', [-120 10], ... 'YLabel', 'Magnitude-squared, dB', ... 'Position', figposition([50 30 30 40]));
ストリーム処理
スペクトルを表示します。スペクトル アナライザーの実行中に、信号のピーク、占有帯域幅、その他の特性を測定できます。
% Initialize radio time radioTime = 0; % Main loop while radioTime < userInput.Duration % Receive baseband samples (Signal Source) if SAParams.isSourceRadio if SAParams.isSourcePlutoSDR rcv = sigSrc(); lost = 0; late = 1; elseif SAParams.isSourceUsrpRadio rcv= sigSrc(); lost = 0; else [rcv,~,lost,late] = sigSrc(); end else rcv = sigSrc(); lost = 0; late = 1; end rcv = rcv - mean(rcv); % Remove DC component. step(hSpectrum, rcv); % Update radio time. If there were lost samples, add those too. radioTime = radioTime + SAParams.FrontEndFrameTime + ... double(lost)/SAParams.FrontEndSampleRate; end % Release all System objects release(sigSrc); release(hSpectrum);

まとめ
この例では System object を使用して、受信信号のスペクトルを解析しました。
