Sampling data at x_n=cos(n*pi/N) for fft derivative
2 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
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 Kommentare
Antworten (1)
Sulaymon Eshkabilov
am 14 Aug. 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);
Siehe auch
Kategorien
Mehr zu Fourier Analysis and Filtering finden Sie in Help Center und File Exchange
Produkte
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!