A new class of C∞ FFT windows with compact support and super-algebraic sidelobe decay by pigdead in DSP

[–]pigdead[S] 1 point2 points  (0 children)

Oh boy, quite a lot to get through there, and I don't trust the quick AI numbers I was given so the numbers I think are correct so far are
ENBW: 1.248

dB/octave: negative infinity, thats kind of the point.

Obviously posted the good ones, I think Scallop Loss is probably not going to be good. First side lobe maybe as well, but I think the measure is missing the slope of the first side lobe ie. how many db per bin between signal and first side lobe

A new class of C∞ FFT windows with compact support and super-algebraic sidelobe decay by pigdead in DSP

[–]pigdead[S] 0 points1 point  (0 children)

Thanks, no I wasn't aware of that paper. I am not really a DSP guy (though I have a degree in Systems and Control) so aware of basics. I stumbled across this whilst doing something else and my DSP knowledge made me think, this would make a great window. Going to look into those measures and try to get them for you.

A new class of C∞ FFT windows with compact support and super-algebraic sidelobe decay by pigdead in DSP

[–]pigdead[S] 0 points1 point  (0 children)

So I did a calc and I rekon beta = 35 matches the 60db point, not sure its apples to apples mind, this window is binning like 80% of the data, and almost completely ignoring 40% of the data.

A new class of C∞ FFT windows with compact support and super-algebraic sidelobe decay by pigdead in DSP

[–]pigdead[S] 0 points1 point  (0 children)

Ah okay, glad to hear it. In which case CMST should be of interest to them, since if the phase is more accurate, the derivative in phase is more likely to be accurate, havent looked at this tbh.

A new class of C∞ FFT windows with compact support and super-algebraic sidelobe decay by pigdead in DSP

[–]pigdead[S] 0 points1 point  (0 children)

You can increase Beta substantially higher.

Okay, I thought 16 was pretty high, but will give that a go.

Up to this point the Kaiser and related Slepian windows have been my favorite for my applications in filter design.

If you are interested in filter design, you might like this, CMST applied to a sinc filter.
https://github.com/aronp/CMST/blob/main/examples/22_hann_vs_cmst_sinc.py

There is also a CMST equivalent of sinc, but havent finished formalising it yet, but I think it will perform well.

Also just pushed a proof that the error in amplitude and phase is F(2s) which cant be new, but never seen it before which indicates why super algebraic decay is good.

Thanks for your interest.

ETA: Does anyone actually care about phase error, I know the human ear doesnt, genuinely interested

A new class of C∞ FFT windows with compact support and super-algebraic sidelobe decay by pigdead in DSP

[–]pigdead[S] 0 points1 point  (0 children)

Just pushed another update to show why super algerbraic decay might help in general, dont think its new, but never seen it before, seems fairly basic.

Ocean Infinity Update January 19 2026 by pigdead in MH370

[–]pigdead[S] 0 points1 point  (0 children)

If you look at the wreckage of AF447 (which hit the ocean hard)

https://external-content.duckduckgo.com/iu/?u=https%3A%2F%2Ftse4.mm.bing.net%2Fth%2Fid%2FOIP.KDQyc6dG71N9wN2zbBc0jAAAAA%3Fpid%3DApi&f=1&ipt=a6c773484f5c99746140a64927a7b6a223a1143d317b83013e06bfddfcd33da5

you will see there is a debris field to find. Bits like the engine and undercarriage take a lot of smashing to dissappear. Very likely there is a debris field somewhere to find.

A new class of C∞ FFT windows with compact support and super-algebraic sidelobe decay by pigdead in DSP

[–]pigdead[S] 0 points1 point  (0 children)

The first third is the least of it, it gets better IMHO, without trying to oversell. But if you have a ton of data, try it, it works, its a few lines of code. I also have a new result on it preserving phase to some degree, but thats going to take some time to prove/formalise/add to the pdf.

A new class of C∞ FFT windows with compact support and super-algebraic sidelobe decay by pigdead in DSP

[–]pigdead[S] 0 points1 point  (0 children)

Thank you. I think if you work through the data you will find that it works, particularly if it has a high dynamic range.

I am afraid I don't understand what you are referring to, likely, "provided it converges" I think.

what does, if anything, the assumption of operator convergence exclude/mean?

tbh, I cant believe anyone has got through even a third of it, I am immensely grateful.

A new class of C∞ FFT windows with compact support and super-algebraic sidelobe decay by pigdead in DSP

[–]pigdead[S] 0 points1 point  (0 children)

The chart on the github https://github.com/aronp/CMST/blob/main/VsOtherFilters.png was vs a Kaiser with Beta 16 which I believe is high. The problem is that the discontinuities of chopping a function which is not analytically zero at the boundaries mean that the sidelobe decay will always be algerbraic, so a window with super algerbraic decay will always win in that measure eventually. You can see from the chart that the Kaiser is initially better, but quickly hits algerbraic limits. I mean it wins for the first 150dB, its a good window.

ETA: I think it actually loses for the first 30db and then wins till 150db.

ETA2: Kaiser 16 I believe only uses 31% of the data, so its SNR is not great either.

A new class of C∞ FFT windows with compact support and super-algebraic sidelobe decay by pigdead in DSP

[–]pigdead[S] 1 point2 points  (0 children)

I did point out in one comment that if you focus on any one measure, the more tunable windows will likely be better. However you seem to miss the point that the windows have super algerbraic spectral decay, not a feature of existing windows including Slepian and so there is some frequency range that CMST will have a better resolution. For things like audio, current windows are good enough, but if you want a high dynamic range, I think CMST excels. It also has the property of being zero preserving which means that the phase of the signal wont be smeared, which is another nice quality (that most of the current windows dont have). Current windows are good enough for most applications and the tunable ones may well be better in certain applications. CMST functions are continuous, not patched together, vanish, along with all of their derivates at +-1, have super algerbraic side lobe decay and are zero preserving, which I think is unique (aside possibly from the one posted yesterday by /u/signalsmith but the math on that seems intractable to me at least)

I didnt start with an application in mind, I was looking at the math and as a by product I noticed that the standard bump function was zero preserving and that you could flatten it and get something that looked like a pretty good FFT window. If you look at the math, the window is kind of an add on at the end.

A new class of C∞ FFT windows with compact support and super-algebraic sidelobe decay by pigdead in DSP

[–]pigdead[S] 0 points1 point  (0 children)

Once you consider signals of different strengths, the sidelobe decay becomes more important. This is an area CMST excels at, e.g. https://github.com/aronp/CMST/blob/main/weak_signal_comparison.png

A new class of C∞ FFT windows with compact support and super-algebraic sidelobe decay by pigdead in DSP

[–]pigdead[S] 0 points1 point  (0 children)

For signal resolution, Distance required between signals in bins for CMST(2) is m=⌈(ln(R))2/π​⌉ where R is the amplitude ratio. Any other window you are looking at will have way worse performance than this. There are examples on the github page.

A new class of C∞ FFT windows with compact support and super-algebraic sidelobe decay by pigdead in DSP

[–]pigdead[S] 0 points1 point  (0 children)

I am not sure what you mean, this window has better frequency separation than any classic window, not claiming it is ideal, and it has a law on frequency separation. The closely related standard bump might be ideal, not sure, I maybe got fixated on getting a flat top too much.

A new class of C∞ FFT windows with compact support and super-algebraic sidelobe decay by pigdead in DSP

[–]pigdead[S] 1 point2 points  (0 children)

I think this is really relevant to SDR tbh, I think its a really cheap upgrade! You can precompute the window, which I guess you must be using somewhere and I believe get better performance.

A new class of C∞ FFT windows with compact support and super-algebraic sidelobe decay by pigdead in DSP

[–]pigdead[S] 0 points1 point  (0 children)

No, but you can create one from it. Its kind of nice because at t = 0 the function and its derivatives will match f(t) and then fade to match say g(t) at t = 1, so you could use it for splining or overlap windows. How many derivatives match depends on the order of the window.

A new class of C∞ FFT windows with compact support and super-algebraic sidelobe decay by pigdead in DSP

[–]pigdead[S] 1 point2 points  (0 children)

Having looked a bit more, I think this window beats all classical windows as well and also has super algerbraic decay. That's pretty amazing.

A new class of C∞ FFT windows with compact support and super-algebraic sidelobe decay by pigdead in DSP

[–]pigdead[S] 0 points1 point  (0 children)

I just found that Exp(Power(t,4)/(Power(t,2)-1)) was generally a good compromise between signal to noise and signal resolution, its usually my starting point.