How to get the spectrum plot of a 5G NR signal generated by MATLAB?
9 views (last 30 days)
Show older comments
Using the 5G NR signal generator, I generated a signal and then exported the MATLAB script. Then I ran this script, hoping I'd get the same plot as what I saw on the waveform generator, but I didn't (I got the 2nd fig here). Could someone please tell me why and how I can fix this issue?
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/1260220/image.png)
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/1260225/image.png)
What is the unit of the waveform signal? Is it watt, dBm,..? I'm wondering by calculating rms(waveform) what would be the unit of this RMS signal.
Thanks in advance!
2 Comments
William Rose
on 11 Jan 2023
My university does not have the 5G toolbox so I cannot open the 5G signal genrator app.
If you upload a file with the time domain signal that is generated by the app, I will look at it. (Specify sampling rate if it's not obvious.) The script probably calls functions in the toolbox that I don't have.
Accepted Answer
William Rose
on 12 Jan 2023
I downloaded and unzipped the large data file, waveform.mat, using the link you provided. I see that the signal is complex, with fs=122.88 MHz and duration T=0.02 s. I ran the commands you suggested. I got the same result you got: the "bad" spectrum, consisting of a horizontal line.
The code you suggested using to make the spectrum included no options other than setting the sampling rate:
spectrum = dsp.SpectrumAnalyzer('SampleRate', Fs);
spectrum(waveform);
release(spectrum);
The screenshot you posted from the Wireless Waveform Generator (WWG) has many options on the left side. I suspect that the code that got exported did not include all the options that were set in the WWG tool. I am not a regular user of the Spectrum Analyzer Tool, and, as I mentioned before, I don't have the 5G toolbox and therefore do not have the WWG.
Let's compute the spectrum "by hand":
The screenshot of the good spectrum, which you posted, and the bad spectrum both show RBW (resolution band width)=120 kHz. Therefore I will compute the spectrum with Welch's method, and I will use a Hann window of width Nw=fs/fRBW=1024 points. I choose Welch's method and a Hann window because the Signal Analyzer appears to use these by default.
%% Get data
waveform=load('waveform');
x=waveform.waveform;
fs=122.88e6; %sampling rate (Hz)
fRBW=120e3; %resolution bandwidth (Hz)
Nw=fs/fRBW; %window width (points)
%% Compute spectrum
[pxx,f]=pwelch(x,hann(Nw,'periodic'),0,Nw,fs,'centered','power');
pdBm=db(pxx*1e3,'power'); %convert power to dBm
%% Plot spectrum
plot(f/1e6,pdBm,'-b');
ylabel('dBm'); xlabel('Frequency (MHz)'); grid on; xlim([-62,62]);
The code above makes the figure below. This is very much like the good spectrum you posted, but less noisy. The height of the center plateau is the same (-30 dBm), the low values on the sides are similar (<-60 dBm), the frequency range is the same (+- 61 MHz), and the plateau cutoff frequencies are very similar (about +-48 MHz).
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/1260575/image.png)
Good luck @Susan
2 Comments
William Rose
on 12 Jan 2023
@Susan, if you inspect the spectrum plot made by my code, or if you inspect the vector f made by my code, you will see that the frequencies are separated by 1.2e5 = 120 kHz. This is the resolution bandwith of the original spectra which you posted. This happened in my code because I chose a window length of Nw=fs/(1.2e5).
More Answers (0)
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!