Spectrum analyzer averaging


I wanted to automatically measure the phase noise of a baseband signal using a Moku:Pro, so I’m trying to write a code using Matlab API.

To get smooth and clear data, I tried to get the data averaged (for example 30 times), but the API spectrum analyzer doesn’t seem to have that function in it. The only way to do that is to iteratively get the data with a for loop and average them. However, it takes quite a long time from my experience.

Is there any way to get averaged data?

There is not an averaging function in the Moku APIs that mimics the Averaging filter in the desktop app. The Averaging filter in the app averages N number of previous frames which helps smooth out the visualized data for a cleaner view.

Depending on what it is you are wanting to do with your data, it may be better to get N frames of data first and then average it instead of running a for loop that continuously averages over X amount of time (or loops). Keep in mind that get_data() will return 1024 points and the time it takes for that data to get from your Moku:Pro to the PC will vary based on your network latency, or use USB-C for fastest acquisition time using the APIs.

At the end of January we will be releasing a data streaming feature that may help with your application if you need to measure the phase noise over a lengthy period of time and continuously average it over that time while averaging N frames of samples. Keep a look out for this feature coming soon!