How to remove a particular frequency in the fft code?
조회 수: 15 (최근 30일)
이전 댓글 표시
I am doing FFT of 1000000 data points. I have attached my FFT code. In this code, i got frequency 10.1 kHz but i want to remove that frequency. what kind of filter i can use and is chebyshev type 1 is suitable for this purpose.
data = csvread('5fr_chdis.csv');
time = data(1:1000000,3);
S = data(1:1000000,4);
Fs = 10^(8); % sampling frequency
T = 1/Fs; % sampling timeperiod
L = 1000000; % length of signal
t = (0:L-1)*T;
f = Fs*(0:(L/2))/L;
f1 = f/1000;
Y = fft(S);
P2 = abs(Y/L);
P1 = P2(1:L/2+1);
P1(2:end-1) = 2*P1(2:end-1);
plot(f1,P1)
title('Frequency spectrum')
xlabel('frequency (kHz)')
ylabel('Amplitude')
%axis([0 50 ylim])
axis([100 200 0 0.2])
댓글 수: 0
채택된 답변
Walter Roberson
2019년 6월 19일
[~, idx] = min(abs(f - 10.1)); %which bin is closest to 10.1 ?
Y(idx) = 0; %zero that bin
Y(end-idx+2) = 0; %zero its complex conjugate
추가 답변 (0개)
참고 항목
카테고리
Help Center 및 File Exchange에서 Fourier Analysis and Filtering에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!