このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
信号のスペクトル解析
この例では、信号のスペクトル解析を行う方法を説明します。ファイルに記録されたデータを使用するか、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
200 シリーズ USRP 無線機と Communications Toolbox Support Package for USRP Radio。NI™ USRP デバイスを Ettus Research™ 200 シリーズ USRP デバイスにマッピングする方法については、Supported Hardware and Required Softwareを参照してください。
300 シリーズ USRP 無線機と Wireless Testbench Support Package for NI USRP Radios。NI USRP デバイスを Ettus Research 300 シリーズ USRP デバイスにマッピングする方法については、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, ... 'SpectralAverages', 50, ... '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 を使用して、受信信号のスペクトルを解析しました。