smousavi05 / Denoising-BTwavelet

This repository contains MATLAB scripts and sample seismic data for appying seismid denoising proposed in: "Hybrid Seismic Denoising Using Higher‐Order Statistics and Improved Wavelet Block Thresholding"
https://www.researchgate.net/publication/303849872_Hybrid_Seismic_Denoising_Using_Higher-Order_Statistics_and_Improved_Wavelet_Block_Thresholding
34 stars 22 forks source link

Have a mistake? #1

Closed ucasiggcas closed 3 years ago

ucasiggcas commented 6 years ago

In the demo.m file, case 'synth'
you set data.t=linspace(0,(100),length(data.x)) and data.dt = 0.01 but after processing, I find the length(data.x)) = 1001, so its sample time interval data.dt should be about 0.1 ,but your data.dt is 0.01 ,is this right ?

smousavi05 commented 6 years ago

No, the sampling (data.dt) is the inherent sampling of the synthetic data (data.x). Although you can make data.t to be the same size as the data.x, but for the sake of a short example and demonstration it doesn't make any difference to ignore one sample from the data (data.x) and make the associated time vector (data.t) one sample shorter. None of these would make any problem for the implementation of the denoising as long as both data and time vectors have the same length.

ucasiggcas commented 6 years ago

Thank you for your reply. But I still a little confused. I mean not just ONE sample ! You said, you have downsampling about the data.x or something else ? According to your data.dt, the number (100) in data.t should be 10, and if I set as this, the result is very bad, but when I set the number be 200, the result is better than yours, so what' s the rule to choose the number ? Is the number has relationship of time ?

smousavi05 commented 6 years ago

I just got your point sorry for the confusions. The sampling interval should be 0.1. I will correct and update it. Thanks for the comment btw.

ucasiggcas commented 6 years ago

Thanks a lot, I will think over the number' chioce for different results . I also have a question about SNR in real data, how to calculate the SNR when you don't know the REAL signal ?

smousavi05 commented 6 years ago

The way seismologists calculate the SNR of real data is to select one window after and one window before the onset time (arrival of seismic energy-usually P) and then calculate and divide the RMS amplitude of these two. I also recommend you to check out our CGV algorithm. It is our latest and fastest denoising algorithm.

ucasiggcas commented 6 years ago

CGV ? Not GCV ? Have read the latter, also have the same mistake, should be 0.1, not 0.01 !

smousavi05 commented 6 years ago

Yeah GCV. That is correct the transform part is similar. For the synthetic example need to be changed to 0.1 but for the real one 0.01 is correct.