필터 지우기
필터 지우기

Perform a FFT of the seismic waves, multiply the amplitude by a function, and IFFT.

조회 수: 13 (최근 30일)
I succeeded in Fourier transform using the time history of seismic waves.
The code was entered as follows.
Time = [0, 0.01, 0.02, 0.03, .... 99.99] % 0sec ~ 99.99 sec . It was briefly expressed as .... and actually entered a value.
Acceleration = [0.000024, 0.000325, .... 0.00068] % Seismic wave acceleration corresponding to time above
n = length(Acceleration);
Ts = Time(2)-Time(1);
Fs = 1/Ts;
NFFT = 2^nextpow2(n);
Y = fft(Acceleration,NFFT)/n;
f = Fs/2*linspace(0,1,NFFT/2+1);
Iv = 1:length(f);
figure;
semilogx(f,abs(Y(Iv)));
xlabel('Frequency (Hz)');
ylabel('Amplitude (m)');
title('Fourier spectrum')
The Fourier amplitude obtained by the Fourier transform is multiplied by a value (filter).
Filter to reduce high frequency amplitude :
exp(-pi*0.011.*f)
test1=abs(Y(Iv)).*exp(-pi*0.011.*f); %f=frequency
Graphing showed that the high-frequency amplitude decreased in the Fourier spectrum.
The problem is:
After multiplying the filter, I tried to inverse transform to the time domain, but it was not derived.
test1re=ifft(test1)
Here is a summary of my question:
After multiplying the filter, I want to inversely transform it back to the time domain (so that the seismic wave shape appears).
  댓글 수: 1
Star Strider
Star Strider 2020년 3월 23일
Filtering in the complex frequency domain is not the best option because the Fourier transform contains ‘positive’ and ‘negative’ frequencies (visible as such after using the fftshift function). It is necessary to do the same operation on both the positive and negative frequencies to get the correct result.
The best solution is to convert your frequency domain filter:
exp(-pi*0.011.*f)
to the time domain, for example:
syms F f t
Fcnf(f) = exp(-pi*0.011.*f); % Frequency Domain
F = sym(100); % Choose A Frequency
Fcnt = int((Fcnf(-f) + Fcnf(f))*exp(-1i*2*pi*f*t), f, -F, F) % Inverse Fourier Transform
Fcnt = simplify(Fcnt, 'Steps', 500) % Collect Terms
figure
fplot(Fcnt, [-100 100])
and then filter in the time domain.
I leave the details to you.

댓글을 달려면 로그인하십시오.

답변 (0개)

카테고리

Help CenterFile Exchange에서 Seismology에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by