このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
信号のスペクトル解析
この例では、MATLAB®、Communications Toolbox™、および DSP System Toolbox™ を使用した信号のダウンストリーム スペクトル解析を示します。取得した信号を使用することも、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 無線機と対応するソフトウェア Communications Toolbox Support Package for USRP Radio
Communications Toolbox でサポートされる SDR プラットフォームのすべてのリストについては、ソフトウェア無線 (SDR) のソフトウェア無線のための MATLAB & Simulink ハードウェア サポートの節を参照してください。
コード例
受信機は、ユーザーの入力を求めて、変数を初期化します。次にループで、信号ソースと 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);
まとめ
この例では、Communications Toolbox™ の System object を使用して、受信信号のスペクトルを解析しました。