ok, cool
now, it would also be nice to have a good band limited table reader...
cyrille
Charles Henry a écrit :
Hey, Cyrille,
I kind of thought so... we are quickly running into the law of diminishing returns. I was up late, last night, working on the analysis some more. I think I can have another 6-point version with better characteristics tonight.
Chuck
On Tue, Jul 8, 2008 at 11:35 AM, cyrille henry cyrille.henry@la-kitchen.fr wrote:
hello Chuck,
i tested this. (and commited) i think tabread6c~ is a bit better than tabread4c~. but differences are more smaller
thx
Cyrille
Charles Henry a écrit :
On Sat, Jun 28, 2008 at 6:43 AM, cyrille henry cyrille.henry@la-kitchen.fr wrote:
ok, i'll try that. but i don't think adjusting the 2nd derivative is the best thing to do. for me, having a 6 point interpolation would be more important.
I put together a 6-point interpolation formula and analyzed it. For this I used a 5th degree polynomial, and 6 constraints:
(I want to change up the notation a bit, and not use the letters a, b, c, etc... when switching to 6-point. Y[-2],Y[-1],Y[0], Y[1], Y[2], Y[3] are the points from the table. a5 is the coefficient of x^5, a4 is the coeff. of x^4, ... a0 is a constant term. f(x) is the interpolation polynomial.)
f(0)=Y[0] f(1)=Y[1] f'(0)= 1/12*Y[-2] - 2/3*Y[-1] + 2/3*Y[1] - 1/12*Y[2] f'(1)= 1/12*Y[-1] - 2/3*Y[0] + 2/3*Y[2] - 1/12*Y[3] f''(0)= -1/12*Y[-2] + 4/3*Y[-1] - 5/2*Y[0] + 4/3*Y[1] - 1/12*Y[2] f''(1)= -1/12*Y[-1] + 4/3*Y[0] - 5/2*Y[1] + 4/3*Y[2] - 1/12*Y[3]
This uses improved approximations for the derivative. One advantage of going to 6-point interpolation is to get better numerical derivatives. These approximations of the 1st and 2nd derivatives are accurate up to a higher frequency than before. We can also continue to increase the number of points arbitrarily, without necessarily having to increase the degree of the polynomial. The degree of the polynomial is only determined by the number of constraints, not the number of points.
The coefficients used in this scheme are
a0= Y[0] a1= 1/12*Y[-2] - 2/3*Y[-1] + 2/3*Y[1] - 1/12*Y[2] a2= -1/24*Y[-2] + 2/3*Y[-1] - 5/4*Y[0] + 2/3*Y[1] - 1/24*Y[2] a3= -3/8*Y[-2] + 13/8*Y[-1] - 35/12*Y[0] + 11/4*Y[1] - 11/8*Y[2] + 7/24*Y[3] a4= 13/24*Y[-2] - 8/3*Y[-1] + 21/4*Y[0] - 31/6*Y[1] + 61/24*Y[2] - 1/2*Y[3] a5= -5/24*Y[-2] + 25/24*y[-1] - 25/12*Y[0] + 25/12*Y[1] - 25/24*Y[2] + 5/24*Y[3]
After that, I continued with the impulse response calculations and spectral response calculations, which are a bit disappointing. I'll spare you the equations (for now) and post the graphs. The new traces for the 6-point interpolator are shown in green. It's a little bit hard to see, but the things to look for are the rate at which the graph falls off and the locations of the peaks. The 6-point function has a flatter spectrum, which comes up closer to the Nyquist frequency, and falls off faster. These are the key characteristics of the spectrum we want. The green trace falls off according to 1/w^4, compared to 1/w^3 for tabread4c~ and 1/w^2 for tabread4~
You can see the impulse response in the first graph along with the spectrum. The log vs. dB scale is used same as before, and secondly, I've posted a linear graph, so you can see the difference between functions near the Nyquist frequency (x=pi).
It gives me some ideas for another 6-point scheme, more like tabread4c~, which will fall off at a rate of 1/w^5 and have more notches in the frequency response. I'll work on it a bit, and see how it goes.
Chuck
Pd-list@iem.at mailing list UNSUBSCRIBE and account-management -> http://lists.puredata.info/listinfo/pd-list