Detecting Analog Pulses in Software [modified]
-
The background of why I need to do this is down below of which you can skip or read later. Basically, I need to be able to detect and process pulses, saving individual pulses into an object or structure for later processing for pulse train correlation. The data is already assigned a value between 1 and 255 (the Y component) where X is time of each sample of digitized data received from an A/D board. I start by looking for a leading edge within the data by skipping an amount of samples and keeping track of slope. When the slope rise is sufficient, I know I am in the leading edge and start looking for the plateau. Of course, what else can happen is that this could be a noise pulse (not enough pulse width to be considered a radar data pulse) or could be an overlapped or wide pulse (two pulses possibly joined together as one) in which case if the two pulses are of different amplitudes or plateau levels you would see a pulse leading edge, a complete plateau, and then followed by a trailing edge (most likely a very small trailing edge) meaning it goes down but not back down to the noise floor and then starts rising up again for the second pulse. Of course, ideally, you get the traditional clear pulse which has a leading edge, plateau, and a long trailing edge back down to the noise floor. Here is the problem. You can see all of the possibilities (and there are more below based on receiving overlapped pulse trains of different amplitudes) and trying to read low level signals (say at 80 to 90) out of a noise floor that could be in the low 50's to 60's. I am not sure how to tackle this, is it a good case for a state machine? I'm not sure I am explaining this correctly but would appreciate any input on how to think about and implement a proper design for these possibilities. Currently I am trying more of an implementation based on processing the data linearly or sequentially in time so that once I see a leading edge, one of several possibilities could arise, and then I can perhaps call functions based on what I think is the possibility. However, until I start processing the data, I am not sure what the possibility is so I can't very well call a function on what is unknown. Thanks. Oh yeah. From what I've been told from my engineering friend, leading edge and pulse detection is overwhelmingly done with hardware. I've searched the web for any software examples and they are few with most related to patents of which I did not read. However, the upside is that whatever can be done in software can be programme
-
The background of why I need to do this is down below of which you can skip or read later. Basically, I need to be able to detect and process pulses, saving individual pulses into an object or structure for later processing for pulse train correlation. The data is already assigned a value between 1 and 255 (the Y component) where X is time of each sample of digitized data received from an A/D board. I start by looking for a leading edge within the data by skipping an amount of samples and keeping track of slope. When the slope rise is sufficient, I know I am in the leading edge and start looking for the plateau. Of course, what else can happen is that this could be a noise pulse (not enough pulse width to be considered a radar data pulse) or could be an overlapped or wide pulse (two pulses possibly joined together as one) in which case if the two pulses are of different amplitudes or plateau levels you would see a pulse leading edge, a complete plateau, and then followed by a trailing edge (most likely a very small trailing edge) meaning it goes down but not back down to the noise floor and then starts rising up again for the second pulse. Of course, ideally, you get the traditional clear pulse which has a leading edge, plateau, and a long trailing edge back down to the noise floor. Here is the problem. You can see all of the possibilities (and there are more below based on receiving overlapped pulse trains of different amplitudes) and trying to read low level signals (say at 80 to 90) out of a noise floor that could be in the low 50's to 60's. I am not sure how to tackle this, is it a good case for a state machine? I'm not sure I am explaining this correctly but would appreciate any input on how to think about and implement a proper design for these possibilities. Currently I am trying more of an implementation based on processing the data linearly or sequentially in time so that once I see a leading edge, one of several possibilities could arise, and then I can perhaps call functions based on what I think is the possibility. However, until I start processing the data, I am not sure what the possibility is so I can't very well call a function on what is unknown. Thanks. Oh yeah. From what I've been told from my engineering friend, leading edge and pulse detection is overwhelmingly done with hardware. I've searched the web for any software examples and they are few with most related to patents of which I did not read. However, the upside is that whatever can be done in software can be programme
I am complaining here but I don't mean it to be as bad as it sounds. If you can't get some answers or suggestions regarding a problem, am I using the wrong forum? I seriously debated posting this topic in the Lounge since it didn't seem to apply to any specific programming platform. I know there are a lot of smart people who read and contribute to Code Project and I know I cannot expect that every question can be answered. However, I sort of did appear hopeful if not expectant, that somebody would have tried to detect pulses using software or had already done it. I will gladly repost to another forum if anyone would think that would be helpful but have been reluctant to do it fearing the forum police would jump all over the wrong question to the wrong forum. But, if you get no answer, its either the way I am asking it, nobody knows the answer, or nobody is reading the question. I perused a few pages of this forum and see that yeah some questions go unanswered, so I am not alone here. What does one do?
-
I am complaining here but I don't mean it to be as bad as it sounds. If you can't get some answers or suggestions regarding a problem, am I using the wrong forum? I seriously debated posting this topic in the Lounge since it didn't seem to apply to any specific programming platform. I know there are a lot of smart people who read and contribute to Code Project and I know I cannot expect that every question can be answered. However, I sort of did appear hopeful if not expectant, that somebody would have tried to detect pulses using software or had already done it. I will gladly repost to another forum if anyone would think that would be helpful but have been reluctant to do it fearing the forum police would jump all over the wrong question to the wrong forum. But, if you get no answer, its either the way I am asking it, nobody knows the answer, or nobody is reading the question. I perused a few pages of this forum and see that yeah some questions go unanswered, so I am not alone here. What does one do?
Just a thought... have you tried the Math & Algorithms forum?
-
Just a thought... have you tried the Math & Algorithms forum?