Fourier Transform Step function
조회 수: 6 (최근 30일)
이전 댓글 표시
Hallo,
i have a bit of a problem, cause I need to get the frequency spectrum of this function:
f(t) = 3,97/2*(1-cos(pi*t/tr))
f(t<0) = 0
f(t>tr) = 3,97
tr = 0.8*10^-6
I tried to do it and my result looks like this:

Here is the code I used:
fa = 10^8; % Abtastfrequenz
fn = fa/2; % Nyquistfrequenz
N = 1024^2; % gewünschte FFT-Länge (N=2^x, sonst wird der DFT-Algorithmus verwendet!)
df = fa/N; % Frequenzauflösung
t = 0 : 1/fa : (N-1)/fa;
tr = 0.8*10^(-6);
f = 3.97/2*(1-cos(pi*t/tr));
f(t>tr) = 3.97;
f(t<0) = 0;
a1 = 3.97;
y = f; % y-Vektor
y = [y(1:N/2) zeros(1, N/2)];
max_y = max(abs(y))*1.1;
H = fft(y, N);
amplH = abs(H);
x_fn = 0 : df : fn-df;
x_fa = 0 : df : fa-df;
amplitudengang = [amplH(1)/N amplH(2:N/2)/(N/2)];
figure;
plot(x_fn, 20*log10(amplitudengang))
axis([0 fn -100 20*log10(a)+3])
set(gca,'XScale','log')
title('Amplitudengang')
ylabel('Amplitude in dB')
xlabel('Frequenz [Hz]')%['Auflösung: ',num2str(df),' Hz Frequenz in Hz'])
grid
To be honest I got most of the code out of the internet but it worked perfectely for my impuls function.
Thank you.
Regards, Daniel
댓글 수: 0
답변 (0개)
참고 항목
카테고리
Help Center 및 File Exchange에서 Digital and Analog Filters에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!