信号的频谱分析
此示例说明如何进行信号的频谱分析。您可以使用文件中的记录数据,或使用 RTL-SDR 无线电、ADALM-PLUTO 无线电或 USRP™ 无线电实时接收信号。您可以更改无线电的中心频率以将无线电调节到存在信号的频带。然后您可以使用频谱分析仪查看接收频谱并进行测量。
有关此示例的 Simulink® 实现,请参阅Spectrum Analysis of Signals in 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 来分析接收信号的频谱。
