# How to increase the resolution?

• MNE version: `1.2
• operating system: Windows 11
For the following function with sfreq = 2500, and tmin = 0.5 with tmax =4 seconds. I want to calculate the psds of the epochs object with a higher resolution. Currently, the wrapper function called compute_psd for the EpochsSpectrum(
self, method=method, fmin=fmin, fmax=fmax, tmin=tmin, tmax=tmax,
picks=picks, proj=proj, n_jobs=n_jobs, verbose=verbose,
**method_kw)
object is called. The current frequency resolution I achieve is 0.2857 between the returned frequencies. I want to increase this to 0.05. Does anybody know how I can change my parameters on how to do this or an interpolation method?
`````` tmin = 0.5
tmax = 4.
fmin = 1.
fmax = 90.

# get the sampling frequency
sfreq = epochs.info['sfreq']

spectrum = epochs.compute_psd(
'welch',
n_fft=int(sfreq * (tmax - tmin)),
n_overlap=0, n_per_seg=None,
tmin=tmin, tmax=tmax,
fmin=fmin, fmax=fmax,
window='boxcar',
verbose=False)
psds, freqs = spectrum.get_data(return_freqs=True)
``````

Best regards,

Sjoerd

Hi @Sjoerd .

In short, your frequency resolution can be calculated by `1 / [your window size in seconds]`. If you are calculating the PSD on your full epoch, then the window size is the same as your epoch length.

In that scenario, if your epochs are 1-second:
`1 / 1 # equals 1 (Hz frequeny resolution)`
2 secondsâ€¦
`1 / 2 # equals 0.5 (Hz frequency resolution)`
4 seconds â€¦
`1 / 4 # equals 0.25 (Hz frequency resolution)`
â€¦
20 secondsâ€¦
`1 / 20 # equals 0.05 (Hz frequency resolution)`

But with the welch method, which you are using, the `n_fft` parameter sets the window size (in samples)â€¦

So in your example with a 2500Hz sfreq, `n_fft=(2500 * (4 - 0.5))` , or 8,750 samples.

If we convert samples to seconds so we can use the calculation introduced aboveâ€¦
`# convert samples to seconds.. FYI .0004 is the sampling interval (in seconds) for 2,500Hz`
`8,750 * .0004 # equals 3.5 (seconds window size)`.

and finallyâ€¦
`1 / 3.5 = 0.2857 `
This is why your frequency resolution is 0.2587.

To answer your question, your window size effectively needs to be 20 seconds to achieve a 0.05Hz frequency resolutionâ€¦ so given your example, youâ€™d need to epoch your data into 20.5 seconds chunks, so that `int(2500 * (20.5 - .5))` will give you a 20 second window size.

With that being said, a 0.05Hz frequency resolution seems unnecessarily precise to me. And typically, you set your window size to be long enough to encompass two full cycles of the lowest frequency of interestâ€¦ So if the lowest frequency you want to calculate power for is 1Hzâ€¦ Your window size would be 2-seconds.

2 Likes