Band pass Filter in seismic data
    9 Ansichten (letzte 30 Tage)
  
       Ältere Kommentare anzeigen
    
Hello everyone,
Can i ask this question to all of you,
here i attach seismic file in .txt that contain the amplitude of signal earthquake,  i use it to analyze with band pass filter, but i found it wrong with the  matlab code, please help me:(
the matlab code:
% Input Sinyal
fid = fopen('LEM_BHN.TXT');% Open data
data = textscan(fid,'%f'); % Read data file
fclose(fid); % Close data
x = data{1}; % Amplitudo signal in time domain
N = length(x); % Length sample
dt = 0.01 % Delta time
t = [0:dt:(N-1)*dt]; % Time series
% Spectral analysis using FFT
y = data(:,N);
m = sum(y,2);
Fs = 250;
LD = length(m);
YD = fft(m);
P2D = abs(YD/LD);
P1D = P2D(1:LD/2+1);
fD = Fs*(0:(LD/2))/LD;
figure(1)
plot(fD,P1D)
hold on
title ('Analysis Spectrum')
ylabel ('Amplitude')
xlabel ('Frequency (Hz)')
axis([min(fD) max(fD) min(P1D) max(P1D)])
% m and n top and bottom of range limit bandpass
% Syarat m < n 
m = input('Input the bottom freq value = ');
n = input('Input the top freq value = ');
% Plot Raw Data
figure(2)
for i = 1:N
    subplot(1,2,1)
    plot(data(:,i)+300*i,t,'k');
    set(gca,'Ydir','reverse');
    title ('Before Bandpass Filter')
    legend('Raw')
    ylabel('Time (s)')
    xlabel('Offset (m)')
    hold on
    axis([min(data(:,1)+300*1) max(data(:,i)+300*i) min(t) max(t)])
end
% Bandpass filter and plotting filter
for i = 1:N
    y = data(:,i);
    Fs = 250; %Sampling Freq
    [b,a] = butter(2,[m n]/(Fs/2)); %Bandpass butter function
    yabp = filter(b,a,y);%the result of Bandpass 
    subplot(1,2,2)
    plot(yabp+300*i,t,'k')%Plot Bandpass Filter
    set(gca,'Ydir','reverse');
    legend('band')
    title ('After Bandpass Filter')
    legend('Bandpass')
    ylabel ('Time (s)')
    xlabel ('Offset (m)')
    hold on
    axis([min(yabp+300*1) max(yabp+300*i) min(t) max(t)])
end
0 Kommentare
Antworten (1)
  Surya Talluri
    
 am 14 Aug. 2020
        I understand that the data provided is for a single sample and code is for multiple samples. As you are plotting the signal and filter in loop on same figure, plot is overriding the existing plot.
[b,a] = butter(2,[m n]/125, 'bandpass');
xfilt = filter(b,a,x)
subplot(2,1,1)
plot(t, x)
title ('Before Bandpass Filter')
subplot(2,1,2)
plot(t,xfilt)
title ('After Bandpass Filter')
fvtool(b,a)
We can use “designfilt” function to design a filter by mentioning even more parameters of filter. You can go for higher order filters, if you need sharper response.
d = designfilt('bandpassiir', 'FilterOrder', 2,...
     'HalfPowerFrequency1',m,'HalfPowerFrequency2',n,...
     'DesignMethod','butter','SampleRate',250);
fvtool(d)
xfilt = filter(d, x);
You can refer to following documentation for further understanding:
0 Kommentare
Siehe auch
Kategorien
				Mehr zu Measurements and Spatial Audio finden Sie in Help Center und File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!