How can I improve the estimation of the power spectral density (PSD) of a signal from an oscilloscope

I need to obtain the power spectral density (PSD) of a signal measured with an oscilloscope. The signal consists of a sinusoid with a DC component plus noise. I acquired data from the oscilloscope, saving the maximum available time period. I then plotted the PSD using MATLAB. I attempted to estimate the PSD through FFT with the periodogram method, but the result consistently suffers from significant spectral leakage. I tried making multiple acquisitions of the same signal and averaging them. I also utilized Welch's overlapped segment averaging estimator, which improved the results but not to a sufficient degree. I have also considered zero padding. How can I get a "cleaner" PSD?

EDIT: I have attached an image to explain my situation. Essentially, I am interested in knowing the noise spectrum (ideally even at low frequencies), but the spectral leakage caused by the sinusoidal component covers everything else.

• Are you specifically looking at low-frequency signals? I ask because a DC bias -- and especially still more a wandering DC bias will leak into adjacent bins. A rectangular window (no window) leaks. But so also does any other windowing function applied to the data, though to less degree in some ways. Rather than talking about what you've tried, can you talk about the situation itself more? What are you looking for and what are you dealing with? Pictures are worth thousands of words here, I suspect. Commented Oct 4, 2023 at 17:54
• Are you sure you have the maximum possible sample depth? Some scopes can only get their maximum sample depth when you're only using one channel (and sometimes it even has to be specifically channel 1). Commented Oct 5, 2023 at 2:52
• Yes, this is my case and I am, in fact, using a single channel
– wash
Commented Oct 5, 2023 at 8:52

There are a few things... you can get a higher resolution plot. But you also need to consider that the sinusoid might be noisy as all measured signals contain some sort of noise. If the noise is white, it will show up as a gaussian looking sideband instead of a dirac delta.

Ground out the oscilloscope, and measure the noise power (rms), then generate some noise in matlab and add it to the model, if it looks the same then you'll need a better measurment, and a better oscilloscope.

There are some things that you can do on some scopes, like switching the power and also the vertical resolution that can change the noise and resolution. Make sure you also have a good ground.