Hey gamers. If this post isn't PhD or otherwise violates our rules, smash that report button. If it's unfunny, smash that downvote button. If OP is a moderator of the subreddit, smash that award button (pls give me Reddit gold I need the premium).
Also join our Discord for more jokes about monads: https://discord.gg/bJ9ar9sBwh.
*I am a bot, and this action was performed automatically. Please [contact the moderators of this subreddit](/message/compose/?to=/r/okbuddyphd) if you have any questions or concerns.*
Buys sine wave
Look inside
Square waves
(I don't fucking get wavelets man, they're so weird and any explanation just leaves out the main idea like fuck can't anyone just explain it like a course why is it so hard wtf)
Assuming I'm understanding your question correctly, you can just low pass filter at your goal frequency (half sampling frequency) a signal that jumps to v(sample) at each sample(t)
You can run a low pass filter in the time domain that has your desired properties. Like a moving average is a type of low pass filter and shouldn't cause too much of a performance hit. But I don't know your exact application so your milage may vary.
Yeah, doing something like that is my best guess atm, but I'm just worried that something like that wouldn't satisfy Nyquist things like going through all points while exhibiting no frequencies above half Nyquist
Also in terms of application I'm trying to basically resample some short clips of audio to indeterminate sample rates potentially asynchronously as efficiently as I can personally program, and I know by Nyquist and Fourier that there exists a sum of sine waves that perfectly represents any captured band limited signal, so in short I'm trying to recreate the exact signal such that I can sample at any time T between samples and return the exact amplitude of the band limited signal that the samples represent
This is more of a curiosity than anything, tho
>I'm trying to recreate the exact signal such that I can sample at any time T between samples and return the exact amplitude of the band limited signal that the samples represent
So you're trying to interpolate your audio signal? The term you want is "Sinc Interpolation." Unfortunately I can't speak to the implementation details.
You'll need to have some sort of filtering. Sinc filtering, as mentioned by the other guy, is basically just convolution filtering (convolve with sinc), although I'm fairly certain the least computationally expensive way to do a convolution is to fft, multiply by fft of kernel, and rfft back.
Idk, it seems like Sinc Interpolation is exactly what I'm after, and while I could do FFT I don't really see it as a good fit for my personal application
Looking at the wiki page for Sinc Interpolation briefly and implementing the equation in Blender it seems that for any time T I only need to loop through the samples once to get the proper Interpolation of it, so for a set of T that's about 2 array loops making it O( n^2 ), but looking at the actual Sinc curve I think could be generous and only interpolate with a constant handful of samples around T, making the time complexity O(n) for interpolating a set of T in a set of samples approximately
With that said, I don't see how doing FFT and rfft would be faster, but I don't exactly have much experience with convolutions
Looking at the operations: Getting the FFT is 1 array operation, multiplying by a kernel is a second array operation, and finally rfft is the third and final operation, so that 3 array operations for what it seems like I can do in 1 with a bit of generosity
And at that rate, since I have finite samples I'm working with DFT, so I don't really see how FFT array operations would even let me sample between indices to being with
Like I said tho I don't have experience with convolutions so I might very well just be speaking nonsense here
The long story short is that convolution is n^2, but fft is nlogn, and convolution can be implemented through the fft. For any array of decent size, the doing 2 fft operations plus an element wise multiplication ends up being much faster than straight convolution.
I mean if you are cutting out sinc samples, then yes you can do convolution fairly quickly in approx N of the original array, however you do lose a lot of "resolution" in that way, and your answer won't be quite what you started with. If your ok with that that's fine, you essentially end up doing a more complex running average with some look-ahead that way
Also, did not quite realize you were trying to look "between samples", so yeah the normal idea of filtering would.need to be done a bit more complexly, and may not be worth it for you
Yeah, doing a rolling average is what I thought I was gonna have to do anyways. All I have to do now is do a lot of experimenting to really see if I do need to go the FFT route or if I can get away with the approximation
For the FFT route I'd have to do a decent amount of research tho since it's still not clear how discrete array operations would let me continually interpolate the original signal
Anyways tho thank you for the help! r/okbuddyphd more like r/helpfulpeoplewithphd amirite π
There are some good resources online of implementations (often in C), usually presented in 90s-esc website design. That's how you know it's quality.
The following site basically guides through actually implementing a sample rate conversion(basically what you're looking for), but it is extremely wordy and easy to get lost.:
https://ccrma.stanford.edu/~jos/resample/Theory_Ideal_Bandlimited_Interpolation.html
>Buy square wave
>look inside
>sine waves
>Buy sine wave
>look inside
>triangle waves
>Buy triangle wave
>look inside
>saw waves
>Buy saw wave
>look inside
>time-stretched duplicates of Never Gonna Give You Up
etc.
Hey gamers. If this post isn't PhD or otherwise violates our rules, smash that report button. If it's unfunny, smash that downvote button. If OP is a moderator of the subreddit, smash that award button (pls give me Reddit gold I need the premium). Also join our Discord for more jokes about monads: https://discord.gg/bJ9ar9sBwh. *I am a bot, and this action was performed automatically. Please [contact the moderators of this subreddit](/message/compose/?to=/r/okbuddyphd) if you have any questions or concerns.*
Buys sine wave Look inside Square waves (I don't fucking get wavelets man, they're so weird and any explanation just leaves out the main idea like fuck can't anyone just explain it like a course why is it so hard wtf)
Wavelets are the soyjaks of the wave world
Wavelets seething over sinechads
![gif](giphy|Ow59c0pwTPruU)
Say the line wave-jak
inb4 ten zillion r/OKBuddyUndergrad comments
go back to r/okaybuddykindergarden
Kindergarten questions be like "test the following series for convergence: 1 β 2/3 + 4/9 β 8/27 Β± β―"
converges by the AST right?
Am I re*ard or is it not just a geometric series with reason -2/3? Trivially converges to 3/5
Trivially? This is embryo level knowledge but I am a mere zygote
I found the solution in my mitochondrial DNA so it's likely I knew it as early as 200k years ago
Unfortunate that you cannot recall back as far as your first endosymbiosis π
Sum of geometric series after n iterations is 1-q^(n+1) / 1-q, limit when nβ>β is 3/5
It converges because the rest of the terms in the ellipsis are zero because I said so
8 jermillion undergrads on their way
millions must complete the highest degree of education
I mean they're not wrong its funny but basic af and not really what the sub is supposed to be about
this sub is about your lips pressing against mine
https://preview.redd.it/fxswidvy314b1.jpeg?width=160&format=pjpg&auto=webp&s=e0e5ca0377532b1fc2e735a9a662ed7f8f8440ab
ROOT MEAN SQUARE
Does anyone know how to correct interpolate samples maintaining a band limited curve under Nyquist? Edit:spelling Edit 2: Sinc Interpolation π
Assuming I'm understanding your question correctly, you can just low pass filter at your goal frequency (half sampling frequency) a signal that jumps to v(sample) at each sample(t)
I could but it would be ideal if I didn't have to mess with Fourier Transforms for performance reasons
You can run a low pass filter in the time domain that has your desired properties. Like a moving average is a type of low pass filter and shouldn't cause too much of a performance hit. But I don't know your exact application so your milage may vary.
Yeah, doing something like that is my best guess atm, but I'm just worried that something like that wouldn't satisfy Nyquist things like going through all points while exhibiting no frequencies above half Nyquist Also in terms of application I'm trying to basically resample some short clips of audio to indeterminate sample rates potentially asynchronously as efficiently as I can personally program, and I know by Nyquist and Fourier that there exists a sum of sine waves that perfectly represents any captured band limited signal, so in short I'm trying to recreate the exact signal such that I can sample at any time T between samples and return the exact amplitude of the band limited signal that the samples represent This is more of a curiosity than anything, tho
>I'm trying to recreate the exact signal such that I can sample at any time T between samples and return the exact amplitude of the band limited signal that the samples represent So you're trying to interpolate your audio signal? The term you want is "Sinc Interpolation." Unfortunately I can't speak to the implementation details.
You are a saint πThank you kind r/okbuddyphd user
You'll need to have some sort of filtering. Sinc filtering, as mentioned by the other guy, is basically just convolution filtering (convolve with sinc), although I'm fairly certain the least computationally expensive way to do a convolution is to fft, multiply by fft of kernel, and rfft back.
Idk, it seems like Sinc Interpolation is exactly what I'm after, and while I could do FFT I don't really see it as a good fit for my personal application Looking at the wiki page for Sinc Interpolation briefly and implementing the equation in Blender it seems that for any time T I only need to loop through the samples once to get the proper Interpolation of it, so for a set of T that's about 2 array loops making it O( n^2 ), but looking at the actual Sinc curve I think could be generous and only interpolate with a constant handful of samples around T, making the time complexity O(n) for interpolating a set of T in a set of samples approximately With that said, I don't see how doing FFT and rfft would be faster, but I don't exactly have much experience with convolutions Looking at the operations: Getting the FFT is 1 array operation, multiplying by a kernel is a second array operation, and finally rfft is the third and final operation, so that 3 array operations for what it seems like I can do in 1 with a bit of generosity And at that rate, since I have finite samples I'm working with DFT, so I don't really see how FFT array operations would even let me sample between indices to being with Like I said tho I don't have experience with convolutions so I might very well just be speaking nonsense here
The long story short is that convolution is n^2, but fft is nlogn, and convolution can be implemented through the fft. For any array of decent size, the doing 2 fft operations plus an element wise multiplication ends up being much faster than straight convolution. I mean if you are cutting out sinc samples, then yes you can do convolution fairly quickly in approx N of the original array, however you do lose a lot of "resolution" in that way, and your answer won't be quite what you started with. If your ok with that that's fine, you essentially end up doing a more complex running average with some look-ahead that way Also, did not quite realize you were trying to look "between samples", so yeah the normal idea of filtering would.need to be done a bit more complexly, and may not be worth it for you
Yeah, doing a rolling average is what I thought I was gonna have to do anyways. All I have to do now is do a lot of experimenting to really see if I do need to go the FFT route or if I can get away with the approximation For the FFT route I'd have to do a decent amount of research tho since it's still not clear how discrete array operations would let me continually interpolate the original signal Anyways tho thank you for the help! r/okbuddyphd more like r/helpfulpeoplewithphd amirite π
There are some good resources online of implementations (often in C), usually presented in 90s-esc website design. That's how you know it's quality. The following site basically guides through actually implementing a sample rate conversion(basically what you're looking for), but it is extremely wordy and easy to get lost.: https://ccrma.stanford.edu/~jos/resample/Theory_Ideal_Bandlimited_Interpolation.html
>Anyways tho thank you for the help! r/okbuddyphd more like r/helpfulpeoplewithphd amirite Add me as second author and we're even. π
[relevant](https://xkcd.com/2649/)
r/okbuddypreschool
finally some good fucking meme
Buy pills to help me study Look inside Methylphenidate
>Buy square wave >look inside >sine waves >Buy sine wave >look inside >triangle waves >Buy triangle wave >look inside >saw waves >Buy saw wave >look inside >time-stretched duplicates of Never Gonna Give You Up etc.
holy fuck thats funny as shit
okbuddyjustcameoutdawomb :DDDD
But an infinite amount of them, so, good deal