Sampling data at x_n=cos(n*pi/N) for fft derivative
3 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
I am trying to find the derivative of nonperiodic function with chebyshev polynomials.
The function below is from 'Spectral methods in Matlab'. It expects that the vector v is sampled at x_n=cos(n*pi/N).
x = linspace(1,10,10);
y = rand(1,10)*10;
How to sample y at x_n = cos(n*pi/N) assuming domain [-1,1]
function w = chebfft(v)
N = length(v)-1; if N==0, w=0; return, end
x = cos((0:N)'*pi/N);
ii = 0:N-1;
v = v(:); V = [v; flipud(v(2:N))]; % transform x -> theta
U = real(fft(V));
W = real(ifft(1i*[ii 0 1-N:-1]'.*U));
w = zeros(N+1,1);
w(2:N) = W(2:N)./sqrt(1-x(2:N).^2); % transform theta -> x
w(1) = sum(ii'.^2.*U(ii+1))/N + .5*N*U(N+1);
w(N+1) = sum((-1).^(ii+1)'.*ii'.^2.*U(ii+1))/N + ...
.5*(-1)^(N+1)*N*U(N+1);
0 Commenti
Risposte (1)
Sulaymon Eshkabilov
il 14 Ago 2021
I'd see here to use logical indexing for sampling. E.g.:
N=10; y=rand(1,N)*10;
x_n = cos((0:N)'*pi/N);
Y_Sampled=y(x_n>=0);
Vedere anche
Categorie
Scopri di più su Fourier Analysis and Filtering in Help Center e File Exchange
Prodotti
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!