get the data of dsp.spectrum Analyzer

3 views (last 30 days)
Currently, I am using the below code to display the spectrum of the received signal (before receive filtering) using dsp.spectrumAnalyzer. However, I need the data that is shown itself. How can I get it? Also, how can I generate the spectrum as dsp.spectrumAnalyzer manully from sctractch using fft?
data = 2.*randi([0 1], 1e6, 1)-1;
txFilter = comm.RaisedCosineTransmitFilter;
filteredData = txFilter(data);
rxSignal = awgn(filteredData, 20);
freqAnalyzer = dsp.SpectrumAnalyzer('SampleRate',8e6);
freqAnalyzer((rxSignal));

Accepted Answer

Abderrahim. B
Abderrahim. B on 30 Aug 2022
Hi!
To get data shown in spectrum analyzer, use getSpectrumData method.
data = 2.*randi([0 1], 1e6, 1)-1;
txFilter = comm.RaisedCosineTransmitFilter;
filteredData = txFilter(data);
rxSignal = awgn(filteredData, 20);
freqAnalyzer = dsp.SpectrumAnalyzer('SampleRate',8e6) ;
freqAnalyzer((rxSignal))
specData = getSpectrumData(freqAnalyzer) ;
figure
plot(specData.FrequencyVector{1,1}, specData.Spectrum{1,1})
Hope this helps
  1 Comment
MAWE
MAWE on 31 Aug 2022
It seems the specData.Spectrum{1,1} is the absolute value since it's real. If the signal is complex by adding some noise like below, how can I get the complex frequency representation? In other words, how can I get the same spectrum from the fft of rxSignal?
data = 2.*randi([0 1], 1e6, 1)-1;
txFilter = comm.RaisedCosineTransmitFilter;
filteredData = txFilter(data);
L=length(filteredData);
n=(1/(sqrt(2*10^2))).*(randn(L,1)+1i.*randn(L,1))
rxSignal = filterData + n;
freqAnalyzer = dsp.SpectrumAnalyzer('SampleRate',8e6) ;
freqAnalyzer((rxSignal))
specData = getSpectrumData(freqAnalyzer) ;
figure
plot(specData.FrequencyVector{1,1}, specData.Spectrum{1,1})

Sign in to comment.

More Answers (0)

Tags

Products


Release

R2019b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!