ws6transam
Newbie level 3
- Joined
- Apr 2, 2012
- Messages
- 4
- Helped
- 0
- Reputation
- 0
- Reaction score
- 0
- Trophy points
- 1,281
- Location
- East Lansing, MI
- Activity points
- 1,349
I have a bit of a problem in that I have some digitally sampled seismic data with an unknown sample rate. It's close to 50 s/second, but not quite. Therefore when concatenating large sets of time-history data, the errors stack up until we see a missed sample, or even two samples that fall on the same instant. Our analysis assumes the sample rate is always held to 50.000 s/sec, but it's evident that this assumption isn't true. Fortunately, one of the digitized channels includes a pulse train from a GPS receiver, so there is a constant 100 millisecond square wave impulse that is generated on the beginning of each second. The problem is that the digitizer has some rolloff and therefore the square wave is slewed into a delayed impulse of unknown shape. The 20.something msec sample rate is insufficient to capture the true shape of the pulse.
If I knew what the true shape of the pulse was, I think that they are consistent enough that I could look at a given sample from the existing data, and determine it's position on the 100msec impulse; i.e. does it occur one, two, five, twelve milliseconds, etcetera into the waveform? If I can make a model of the 'typical' impulse, I should be able to resolve a bit better the timing of each sample. If I could do that, I would be able to look at the first impulse in the file, and the last impulse in the file, and figure out how far that first digitized sample of the timing impulse drifted, relative to the stable GPS timing tic. Once I know the drift, I can calculate out the true sample rate and compensate accordingly.
Does anyone have any suggestions into whether or not this would work? I was thinking of identifying each impulse in some C code, then try to come up with a way to automatically overlay them in order to shape a composite waveform. What I am most baffled by is exactly how to determine the overlay. Maybe use the last sample that doesn't move as an indicator, then overlay based on the slope to the next datapoint, coupled with the impulse's position from the file? I think we can assume that the unknown slew is constant enough across the dataset, so the samples either advance or retard at more or less the same rate. I just don't know how to go about coding it quite yet.
First post, my name is Dan, from Michigan State.
If I knew what the true shape of the pulse was, I think that they are consistent enough that I could look at a given sample from the existing data, and determine it's position on the 100msec impulse; i.e. does it occur one, two, five, twelve milliseconds, etcetera into the waveform? If I can make a model of the 'typical' impulse, I should be able to resolve a bit better the timing of each sample. If I could do that, I would be able to look at the first impulse in the file, and the last impulse in the file, and figure out how far that first digitized sample of the timing impulse drifted, relative to the stable GPS timing tic. Once I know the drift, I can calculate out the true sample rate and compensate accordingly.
Does anyone have any suggestions into whether or not this would work? I was thinking of identifying each impulse in some C code, then try to come up with a way to automatically overlay them in order to shape a composite waveform. What I am most baffled by is exactly how to determine the overlay. Maybe use the last sample that doesn't move as an indicator, then overlay based on the slope to the next datapoint, coupled with the impulse's position from the file? I think we can assume that the unknown slew is constant enough across the dataset, so the samples either advance or retard at more or less the same rate. I just don't know how to go about coding it quite yet.
First post, my name is Dan, from Michigan State.
Last edited: