Reply by Johann Klammer February 28, 20202020-02-28
On 02/27/2020 08:12 PM, Richard (Rick) Lyons wrote:
> Hello Johann. > I can only make your Feb 26, 2020 code work if I multiply your final 'retval' sequence by an n-length sequence of 1, -1, 1, -1, ... . That is, in MATLAB code: > > retval = (-1).^(0:n-1).*retval; >
Because it's a function file to drop somewhere for octave to load. It's just the T_N function, not your added phase shift.
Reply by Richard (Rick) Lyons February 27, 20202020-02-27
Hello Johann.
I can only make your Feb 26, 2020 code work if I multiply your final 'retval' sequence by an n-length sequence of 1, -1, 1, -1, ... . That is, in MATLAB code:

retval = (-1).^(0:n-1).*retval;
Reply by Johann Klammer February 26, 20202020-02-26
On 02/25/2020 09:58 AM, Johann Klammer wrote:
> cheby_t.m > function retval = cheby_t (n,v) > if(abs(v)>1) > retval=cosh(n*acosh(v)); > else > retval=cos(n*acos(v)); > endif > endfunction >
I believe this one is more correct: function retval = chebyshev_t (n,v) if(v>=1) retval=cosh(n*acosh(v)); else if(v<=-1) retval=((-1) .^ n) * cosh(n*acosh(-v)); else retval=cos(n*acos(v)); endif endif endfunction
Reply by Richard (Rick) Lyons February 25, 20202020-02-25
Hello Johann. You are very welcome.
Sie k&ouml;nnen mich belohnen, indem Sie mir 5 Kilogramm 
Nurnberger Bratwurst schicken. :-)
Reply by Johann Klammer February 25, 20202020-02-25
On 02/25/2020 12:20 AM, Richard (Rick) Lyons wrote:
> Hi Johann. > I think the problem may be your 'chebyshev_t()' command. My MATLAB 'A(m)' sequence is equal to your 'A(m)' sequence, but my MATLAB 'W(m)' frequency-domain sequence is NOT equal to your 'freq' sequence. My 'W(m)' sequence is: > > W(m) = > 251.1886 -105.9393, 0.4193 -0.6395, 0.0152, 0.3856, 0.5997, > 0.7320, 0.8184, 0.8772, 0.9184, 0.9477, 0.9685, 0.9831, 0.9927, > 0.9982, 1.0000, 0.9982, 0.9927, 0.9831, 0.9685, 0.9477, 0.9184, > 0.8772, 0.8184, 0.7320, 0.5997, 0.3856, 0.0152 -0.6395, > 0.4193, -105.9393. > > Perhaps you could use the processing in my blog's Step# 5 to compute your 'freq' sequence, and see what happens. > > [-Rick-] >
Yes, that fixes it. Thank you. N=32; M=N+1; gamma=48/20; alpha=cosh(acosh(10^gamma)/N); m=[0:N-1]; W=((-1).^m).*cheby_t(N,abs(alpha*cos(pi.*m./N))); td=ifft(W); td=real(td); te=[td(1)/2,td(2:N),td(1)/2]; tf=te/max(te); and... cheby_t.m function retval = cheby_t (n,v) if(abs(v)>1) retval=cosh(n*acosh(v)); else retval=cos(n*acos(v)); endif endfunction
Reply by Richard (Rick) Lyons February 24, 20202020-02-24
Hi Johann. 
I think the problem may be your 'chebyshev_t()' command. My MATLAB 'A(m)' sequence is equal to your 'A(m)' sequence, but my MATLAB 'W(m)' frequency-domain sequence is NOT equal to your 'freq' sequence. My 'W(m)' sequence is:

W(m) =
251.1886 -105.9393, 0.4193   -0.6395, 0.0152, 0.3856, 0.5997,
0.7320, 0.8184, 0.8772, 0.9184, 0.9477, 0.9685, 0.9831, 0.9927,
0.9982, 1.0000, 0.9982, 0.9927, 0.9831, 0.9685, 0.9477, 0.9184,
0.8772, 0.8184, 0.7320, 0.5997, 0.3856, 0.0152   -0.6395,
0.4193, -105.9393.

Perhaps you could use the processing in my blog's Step# 5 to compute your 'freq' sequence, and see what happens.

[-Rick-]
Reply by Johann Klammer February 24, 20202020-02-24
On 02/23/2020 10:54 PM, Richard (Rick) Lyons wrote:
> Hello Johann Klammer. I just now saw your posts. > As far as I know, variable 'gamma' does not have to be an integer. > > Looking at your Feb. 13 post, using N = 32 and gamma = 48/20, my MATLAB software computes exactly the same frequency vector as your posted "freq" vector. That is a good thing. > > When I execute your code to compute your 'tf' vector (the final window sequence) I obtain the same result as my MATLAB code. As far as I can tell your computed 'tf' sequence is the correct final Chebeshev window sequence. > > My computation of your code to compute your 'tf' vector produces: > > tf = > 0.0627, 0.0740, 0.1135, 0.1629, 0.2223, 0.2910, 0.3677, 0.4507, > 0.5375, 0.6252, 0.7106, 0.7904, 0.8611, 0.9197, 0.9636, 0.9908, > 1.0000, 0.9908, 0.9636, 0.9197, 0.8611, 0.7904, 0.7106, 0.6252, > 0.5375, 0.4507, 0.3677, 0.2910, 0.2223, 0.1629, 0.1135, 0.0740, > 0.0627. > > When I plot your 'tf' window sequence it looks good to me. > > [-Rick-] >
from the freq vector in the first post? then it must be octaves ifft()... <http://members.aon.at/~aklamme4/scratch/tf.png>
Reply by Richard (Rick) Lyons February 23, 20202020-02-23
Hello Johann Klammer. I just now saw your posts.
As far as I know, variable 'gamma' does not have to be an integer.

Looking at your Feb. 13 post, using N = 32 and gamma = 48/20, my MATLAB software computes exactly the same frequency vector as your posted "freq" vector. That is a good thing.

When I execute your code to compute your 'tf' vector (the final window sequence) I obtain the same result as my MATLAB code. As far as I can tell your computed 'tf' sequence is the correct final Chebeshev window sequence.

My computation of your code to compute your 'tf' vector produces:

tf = 
0.0627, 0.0740, 0.1135, 0.1629, 0.2223, 0.2910, 0.3677, 0.4507,
0.5375, 0.6252, 0.7106, 0.7904, 0.8611, 0.9197, 0.9636, 0.9908,
1.0000, 0.9908, 0.9636, 0.9197, 0.8611, 0.7904, 0.7106, 0.6252,
0.5375, 0.4507, 0.3677, 0.2910, 0.2223, 0.1629, 0.1135, 0.0740,
0.0627.

When I plot your 'tf' window sequence it looks good to me.

[-Rick-]
Reply by Johann Klammer February 21, 20202020-02-21
On 02/14/2020 10:07 PM, Johann Klammer wrote:
> Nevermind.. it seems the gamma needs2be integer. >
or maybe not. there seems to also have been an off by one somewhere. there still was that weird dip in the middle.. i'm using now M:N+1; alpha:cosh(acosh(10^gamma)/N); A(m):=alpha*cos(%pi*m/M); //<<here the M W(m):=chebyshev_t(N,A(m)); append(makelist(''ev(ratsimp(W(n)),numer),n,0,N/2-1),makelist(''ev(ratsimp(W(n)),numer),n,-N/2,-1)); ..and shift the impulse resp manually later.
Reply by Johann Klammer February 14, 20202020-02-14
Nevermind.. it seems the gamma needs2be integer.