Hi, I'm a biologist so I don't have much experience designing filters, but I think I need to apply a filter to some time series data in order to model a biological system. The problem: I know the step response of the system and I need to design a filter based on this. The best way I can describe the step response is that it has a logarithmic-like rise that saturates. Based on my cursory understanding of signal processing, this makes me think that I need a non-linear phase filter (since the step response is not symmetric). Also, because I'm trying to model a biological system it's important to use a casual filter. To add some more complexity, the system has different step responses, depending on the polarity of the step. The general shape of the curve is the same, but the time constants are different. So for instance, the time constant is 230 msec for positive steps, 80 msec for negative. Once the filter is designed, I will test its response to different (non-step) inputs in order to evaluate the performance of the model. My questions: 1. Is it even possible to design such a filter? 2. If so, how would I go about implementing it in Matlab using the filter() function (I don't have the filter toolbox)? 3. Do you have any recommendations for places I can find more information on this topic, preferably without too many equations (I know, I know....)? I've been using the Second Edition of Steven Smith's "The Scientist and Engineer's Guide to DSP," but it doesn't really cover the specifics of what I'm after. Assume a 1 KHz sampling rate. If needed, I can post some of the data. The details (if you're interested): I'm recording action potentials (spikes) from nerve cells (neurons) in the brain and attempting to model their response to an input. There are many ways to define the response of a neuron, but what I'm looking at specifically is called the instantaneous firing rate, which is the reciprocal of the time between consecutive spikes. The neurons I'm recording have a baseline firing rate around 20 spikes/sec and can increase or decrease their firing rate from that baseline, depending on their input. The dynamics of their response are governed by both their intrinsic properties and their inputs. All neurons can be considered filters to some extent, but there's reason to believe that the ones I'm studying have some unique filtering characteristics. TIA, shane
Nonlinear phase FIR filter in Matlab based on step response
Started by ●July 20, 2007
Reply by ●July 21, 20072007-07-21
sheiney@gmail.com wrote:> > Hi, > > I'm a biologist so I don't have much experience designing filters, but > I think I need to apply a filter to some time series data in order to > model a biological system. > > The problem: > I know the step response of the system and I need to design a filter > based on this. The best way I can describe the step response is that > it has a logarithmic-like rise that saturates.The best way to describe the step response would have been to reveal whether you are talking about digital or analog. It also would be helpful to know if by "step" you mean the data starts at a constant level and ends at a constant level. That is, is this so called "step" finite or does it go on forever. You did mention time series data (I'm not sure if that is a reference to the step response or something else) so I will assume everything is digital and finite. So extracting the impulse rsponse from your Step response is simply a matter of finding the difference between each sample in the data. Assuming the data in question isn't humongous you could do that with paper and pencil. The impulse response will be your FIR filter coefficients. You also said something about "saturates". That sounds like it could be a problem because the best you can do is just guess what is going on there. -jim> Based on my cursory > understanding of signal processing, this makes me think that I need a > non-linear phase filter (since the step response is not symmetric).> Also, because I'm trying to model a biological system it's important > to use a casual filter. To add some more complexity, the system has > different step responses, depending on the polarity of the step. The > general shape of the curve is the same, but the time constants are > different. So for instance, the time constant is 230 msec for > positive steps, 80 msec for negative. > > Once the filter is designed, I will test its response to different > (non-step) inputs in order to evaluate the performance of the model. > > My questions: > 1. Is it even possible to design such a filter? > 2. If so, how would I go about implementing it in Matlab using the > filter() function (I don't have the filter toolbox)? > 3. Do you have any recommendations for places I can find more > information on this topic, preferably without too many equations (I > know, I know....)? I've been using the Second Edition of Steven > Smith's "The Scientist and Engineer's Guide to DSP," but it doesn't > really cover the specifics of what I'm after. > > Assume a 1 KHz sampling rate. If needed, I can post some of the > data. > > The details (if you're interested): > I'm recording action potentials (spikes) from nerve cells (neurons) in > the brain and attempting to model their response to an input. There > are many ways to define the response of a neuron, but what I'm looking > at specifically is called the instantaneous firing rate, which is the > reciprocal of the time between consecutive spikes. The neurons I'm > recording have a baseline firing rate around 20 spikes/sec and can > increase or decrease their firing rate from that baseline, depending > on their input. The dynamics of their response are governed by both > their intrinsic properties and their inputs. All neurons can be > considered filters to some extent, but there's reason to believe that > the ones I'm studying have some unique filtering characteristics. > > TIA, > shane----== Posted via Newsfeeds.Com - Unlimited-Unrestricted-Secure Usenet News==---- http://www.newsfeeds.com The #1 Newsgroup Service in the World! 120,000+ Newsgroups ----= East and West-Coast Server Farms - Total Privacy via Encryption =----
Reply by ●July 21, 20072007-07-21
> The best way to describe the step response would have been to reveal > whether you are talking about digital or analog. It also would be > helpful to know if by "step" you mean the data starts at a constant > level and ends at a constant level. That is, is this so called "step" > finite or does it go on forever.I'm talking about an originally analog signal that has been digitally sampled, so it is now a digital (finite) signal. Sorry for not making that more clear from the beginning. By "step" I mean that the system starts at a constant level, receives a step input with a finite amplitude, and ends at a new constant level. The output of the system to this step input is what I'm considering the "step response." I tried to use the correct terminology for signal processing, but I'm new to this so I could have gotten it wrong. If what you're asking is whether the step is a "pulse" with finite length or simply a level change, I guess I would consider it more of a level change. That is, for the time course that I'm interested in, the step length can be considered infinite.> You did mention time series data (I'm not sure if that is a reference to > the step response or something else) so I will assume everything is > digital and finite. So extracting the impulse rsponse from your Step > response is simply a matter of finding the difference between each > sample in the data. Assuming the data in question isn't humongous you > could do that with paper and pencil. > The impulse response will be your FIR filter coefficients.Thanks for the suggestion. I just tried this and it couldn't quite predict how the system responds to arbitrary input (which is my goal), so I guess I need to take into account some other factor or factors. What I did was to take the "diff" of my "step response" and use that as b in the filter() function:>>y=filter(b,1,x)where x is my arbitrary input and y is the predicted output of the system. Then I plotted y alongside the actual output to evaluate the quality of the prediction. The actual output changed slower than the predicted output and was less sensitive to transients in the input. I'm not sure exactly what the system is doing (that's why I'm trying to model it), but my impression is that it might be serving as something akin to a bandpass filter for a relatively narrow range of frequencies. But it might also be doing something else, because it responds faster to negative steps of the input than to positive steps. Can anyone think of something analogous in the engineering world, possibly from control systems? I just don't have the expertise to recognize it.> You also said something about "saturates". That sounds like it could be > a problem because the best you can do is just guess what is going on > there.What I mean by "saturates" is not that the analog to digital conversion has saturated. The data at the saturation point are real. It just seems to mean that once the system (a neuron) has reached a certain point, it is unable to increase its response to further input. This is quite common in neurophysiology because of the inherent properties of neurons (something called the refractory period of action potentials). I'm just not sure how to model this with a filter. Do you know of a good resource that I could look to for hints? Thanks, shane
Reply by ●July 21, 20072007-07-21
sheiney wrote:> > > The best way to describe the step response would have been to reveal > > whether you are talking about digital or analog. It also would be > > helpful to know if by "step" you mean the data starts at a constant > > level and ends at a constant level. That is, is this so called "step" > > finite or does it go on forever. > > I'm talking about an originally analog signal that has been digitally > sampled, so it is now a digital (finite) signal. Sorry for not making > that more clear from the beginning. By "step" I mean that the system > starts at a constant level, receives a step input with a finite > amplitude, and ends at a new constant level. The output of the system > to this step input is what I'm considering the "step response." I > tried to use the correct terminology for signal processing, but I'm > new to this so I could have gotten it wrong. If what you're asking is > whether the step is a "pulse" with finite length or simply a level > change, I guess I would consider it more of a level change. That is, > for the time course that I'm interested in, the step length can be > considered infinite.I was trying to determine if your impulse response was infinite or finite. It needs to be finite to get an FIR filter. If it starts at one level and ends at some level then what is in between is the step. When you subtract each sample from its neighbor to get the impulse response the part of the data that is constant will produce a difference that is zero.> > > You did mention time series data (I'm not sure if that is a reference to > > the step response or something else) so I will assume everything is > > digital and finite. So extracting the impulse rsponse from your Step > > response is simply a matter of finding the difference between each > > sample in the data. Assuming the data in question isn't humongous you > > could do that with paper and pencil. > > The impulse response will be your FIR filter coefficients. > > Thanks for the suggestion. I just tried this and it couldn't quite > predict how the system responds to arbitrary input (which is my goal), > so I guess I need to take into account some other factor or factors. > What I did was to take the "diff" of my "step response" and use that > as b in the filter() function: > > >>y=filter(b,1,x)So you feed your system a step input and you record the output? Is that what you did to get the data from which you derived b ?> > where x is my arbitrary input and y is the predicted output of the > system. Then I plotted y alongside the actual output to evaluate the > quality of the prediction. The actual output changed slower than the > predicted output and was less sensitive to transients in the input. > > I'm not sure exactly what the system is doing (that's why I'm trying > to model it), but my impression is that it might be serving as > something akin to a bandpass filter for a relatively narrow range of > frequencies. But it might also be doing something else, because it > responds faster to negative steps of the input than to positive > steps. Can anyone think of something analogous in the engineering > world, possibly from control systems? I just don't have the expertise > to recognize it.It sounds like the system is not strictly linear.> > > You also said something about "saturates". That sounds like it could be > > a problem because the best you can do is just guess what is going on > > there. > > What I mean by "saturates" is not that the analog to digital > conversion has saturated. The data at the saturation point are real. > It just seems to mean that once the system (a neuron) has reached a > certain point, it is unable to increase its response to further > input.This also doesn't sound like it is not linear. If it is not linear than it could be complicated to model or it could be fairly simple. If it were linear you should be able to determine what it is from just what you already have. But since it probably isn't linear you probably need to do a lot more work. I would first try seeing how it responds to different amounts of step. Big step, little step, medium sized step - like that. If it is linear it shouldn't make any difference other than the scale of the output ( i. e. the scale of b would change proportional to the scale of the input steps). -jim> This is quite common in neurophysiology because of the > inherent properties of neurons (something called the refractory period > of action potentials). I'm just not sure how to model this with a > filter. Do you know of a good resource that I could look to for > hints? > > Thanks, > shane----== Posted via Newsfeeds.Com - Unlimited-Unrestricted-Secure Usenet News==---- http://www.newsfeeds.com The #1 Newsgroup Service in the World! 120,000+ Newsgroups ----= East and West-Coast Server Farms - Total Privacy via Encryption =----
Reply by ●July 21, 20072007-07-21
On Jul 20, 7:11 pm, shei...@gmail.com wrote:> Hi, > > I'm a biologist so I don't have much experience designing filters, but > I think I need to apply a filter to some time series data in order to > model a biological system. > > The problem: > I know the step response of the system and I need to design a filter > based on this. The best way I can describe the step response is that > it has a logarithmic-like rise that saturates. Based on my cursory > understanding of signal processing, this makes me think that I need a > non-linear phase filter (since the step response is not symmetric). > Also, because I'm trying to model a biological system it's important > to use a casual filter. To add some more complexity, the system has > different step responses, depending on the polarity of the step. The > general shape of the curve is the same, but the time constants are > different. So for instance, the time constant is 230 msec for > positive steps, 80 msec for negative.[snip] Shane, To back off a bit, when you are trying to model a system as a filter, in the sense that the input-output is described by a convolution, you are already implicitly assuming that the system is linear and time-invariant. Do you think that this is the case? Just wondering out loud, since you didn't explain this part in your original post. Julius
Reply by ●July 22, 20072007-07-22
On Jul 22, 11:25 am, julius <juli...@gmail.com> wrote:> On Jul 20, 7:11 pm, shei...@gmail.com wrote: > > > Hi, > > > I'm a biologist so I don't have much experience designing filters, but > > I think I need to apply a filter to some time series data in order to > > model a biological system. > > > The problem: > > I know the step response of the system and I need to design a filter > > based on this. The best way I can describe the step response is that > > it has a logarithmic-like rise that saturates. Based on my cursory > > understanding of signal processing, this makes me think that I need a > > non-linear phase filter (since the step response is not symmetric). > > Also, because I'm trying to model a biological system it's important > > to use a casual filter. To add some more complexity, the system has > > different step responses, depending on the polarity of the step. The > > general shape of the curve is the same, but the time constants are > > different. So for instance, the time constant is 230 msec for > > positive steps, 80 msec for negative. > > [snip] > > Shane, > > To back off a bit, when you are trying to model a system as a filter, > in the sense that the input-output is described by a convolution, > you are already implicitly assuming that the system is linear and > time-invariant. Do you think that this is the case? Just wondering > out loud, since you didn't explain this part in your original post. > > JuliusIf I could I would feed white noise into the system rather than a step and take the power spectral density of the output -and average of course over time. Assuming minimum phase you could get the transfer function of the system. All assuming it is approx linear I suppose which giving it is biological it most probably is not.
Reply by ●July 22, 20072007-07-22
Thanks for your responses. I had hoped that the system would be "linear enough," but this seems to be turning out to not be the case. In a way, that makes it more interesting :-) The story is actually a little more complicated than I initially let on in that I don't actually have total control over the input to the system. The "input" that I have been referring to is actually a behavioral output that may be getting fed into the neuron through a collateral brain pathway. It's somewhat complex, which is why I didn't explain the problem in this way initially, but what I'm actually looking for is a correlation between the behavioral output and the response of the neuron. There seems to be a high correlation between the behavior and the neuron in some respects, but the dynamics of the behavior and the neuron response are different, which is why I thought trying to model the neuron as a filter of the "input" (behavior) might be fruitful. Despite not having total control of the input to the neuron, I can control the behavior in some ways. I can make it a "step" of different amplitudes or I can make it sinusoidal (within a limited frequency range). I can also probably do some arbitrary waveforms. However, white noise wouldn't be possible because of the limited bandwidth of the behavior. Accordingly, the "step" isn't really a true step in that it takes about 50 msec to get to the new level. But this point is probably moot if the neuron isn't linear, which is how things are looking. Jim, you mentioned that even if the system isn't linear it could possibly still be simple to model. How might I go about determining whether this is the case? shane On Jul 22, 12:09 am, gyansor...@gmail.com wrote:> On Jul 22, 11:25 am, julius <juli...@gmail.com> wrote: > > > > > On Jul 20, 7:11 pm, shei...@gmail.com wrote: > > > > Hi, > > > > I'm a biologist so I don't have much experience designing filters, but > > > I think I need to apply a filter to some time series data in order to > > > model a biological system. > > > > The problem: > > > I know the step response of the system and I need to design a filter > > > based on this. The best way I can describe the step response is that > > > it has a logarithmic-like rise that saturates. Based on my cursory > > > understanding of signal processing, this makes me think that I need a > > > non-linear phase filter (since the step response is not symmetric). > > > Also, because I'm trying to model a biological system it's important > > > to use a casual filter. To add some more complexity, the system has > > > different step responses, depending on the polarity of the step. The > > > general shape of the curve is the same, but the time constants are > > > different. So for instance, the time constant is 230 msec for > > > positive steps, 80 msec for negative. > > > [snip] > > > Shane, > > > To back off a bit, when you are trying to model a system as a filter, > > in the sense that the input-output is described by a convolution, > > you are already implicitly assuming that the system is linear and > > time-invariant. Do you think that this is the case? Just wondering > > out loud, since you didn't explain this part in your original post. > > > Julius > > If I could I would feed white noise into the system rather than a step > and take the power spectral density of the output -and average of > course over time. Assuming minimum phase you could get the transfer > function of the system. All assuming it is approx linear I suppose > which giving it is biological it most probably is not.
Reply by ●July 22, 20072007-07-22
sheiney wrote:> > Thanks for your responses. > > I had hoped that the system would be "linear enough," but this seems > to be turning out to not be the case. In a way, that makes it more > interesting :-) The story is actually a little more complicated than > I initially let on in that I don't actually have total control over > the input to the system. The "input" that I have been referring to is > actually a behavioral output that may be getting fed into the neuron > through a collateral brain pathway. It's somewhat complex, which is > why I didn't explain the problem in this way initially, but what I'm > actually looking for is a correlation between the behavioral output > and the response of the neuron. There seems to be a high correlation > between the behavior and the neuron in some respects, but the dynamics > of the behavior and the neuron response are different, which is why I > thought trying to model the neuron as a filter of the > "input" (behavior) might be fruitful. > > Despite not having total control of the input to the neuron, I can > control the behavior in some ways. I can make it a "step" of > different amplitudes or I can make it sinusoidal (within a limited > frequency range). I can also probably do some arbitrary waveforms. > However, white noise wouldn't be possible because of the limited > bandwidth of the behavior. Accordingly, the "step" isn't really a > true step in that it takes about 50 msec to get to the new level. But > this point is probably moot if the neuron isn't linear, which is how > things are looking. > > Jim, you mentioned that even if the system isn't linear it could > possibly still be simple to model. How might I go about determining > whether this is the case?First of all I'm not completely convinced that you are inputting a step and getting a response from that simply because you say that's what your doing. But for the purposes of this discussion we will assume that is what is going on. As I said before what you have already done is all you need to do to extract the frequency response of the system and model it as a convolution process __if it was linear__. So if it was linear the task would be dead simple. There are many non-linear systems that are also simple. For instance the ABS() function is not linear but would be pretty easy to discover if that was what your system looked like. But there are an infinity of possible non-linear systems. So you are going to need a lot more data. As I said before try different amplitude steps as input. You already know that if you scale the input by -1 the output does not scale proportionally. That pretty much tells you it is not linear. The saturation you mentioned also suggest it is not linear. But it still is possible that if you keep the input signal to within a certain narrow range of amplitudes it may behave in a linear fashion within that range. For instance, the ABS function is perfectly linear if you only feed it positive valued data. -jim> > shane > > On Jul 22, 12:09 am, gyansor...@gmail.com wrote: > > On Jul 22, 11:25 am, julius <juli...@gmail.com> wrote: > > > > > > > > > On Jul 20, 7:11 pm, shei...@gmail.com wrote: > > > > > > Hi, > > > > > > I'm a biologist so I don't have much experience designing filters, but > > > > I think I need to apply a filter to some time series data in order to > > > > model a biological system. > > > > > > The problem: > > > > I know the step response of the system and I need to design a filter > > > > based on this. The best way I can describe the step response is that > > > > it has a logarithmic-like rise that saturates. Based on my cursory > > > > understanding of signal processing, this makes me think that I need a > > > > non-linear phase filter (since the step response is not symmetric). > > > > Also, because I'm trying to model a biological system it's important > > > > to use a casual filter. To add some more complexity, the system has > > > > different step responses, depending on the polarity of the step. The > > > > general shape of the curve is the same, but the time constants are > > > > different. So for instance, the time constant is 230 msec for > > > > positive steps, 80 msec for negative. > > > > > [snip] > > > > > Shane, > > > > > To back off a bit, when you are trying to model a system as a filter, > > > in the sense that the input-output is described by a convolution, > > > you are already implicitly assuming that the system is linear and > > > time-invariant. Do you think that this is the case? Just wondering > > > out loud, since you didn't explain this part in your original post. > > > > > Julius > > > > If I could I would feed white noise into the system rather than a step > > and take the power spectral density of the output -and average of > > course over time. Assuming minimum phase you could get the transfer > > function of the system. All assuming it is approx linear I suppose > > which giving it is biological it most probably is not.----== Posted via Newsfeeds.Com - Unlimited-Unrestricted-Secure Usenet News==---- http://www.newsfeeds.com The #1 Newsgroup Service in the World! 120,000+ Newsgroups ----= East and West-Coast Server Farms - Total Privacy via Encryption =----
Reply by ●July 22, 20072007-07-22
Jim, I absolutely agree that, strictly speaking, I'm not inputting a step and getting a response. But I thought what I'm doing approximates the act enough that I can get some useful information for designing a filter to mimic the neuron--if it's linear. The fact that it appears to be non-linear complicates things, but I don't think the correct approach for me at this point is to only work within the linear range because the real system operates in the non-linear range as well. I guess I'll just have to go back to the drawing board.... Thanks for your insight. shane On Jul 22, 6:55 am, jim <"sjedgingN0sp"@m...@mwt.net> wrote:> sheiney wrote: > > > Thanks for your responses. > > > I had hoped that the system would be "linear enough," but this seems > > to be turning out to not be the case. In a way, that makes it more > > interesting :-) The story is actually a little more complicated than > > I initially let on in that I don't actually have total control over > > the input to the system. The "input" that I have been referring to is > > actually a behavioral output that may be getting fed into the neuron > > through a collateral brain pathway. It's somewhat complex, which is > > why I didn't explain the problem in this way initially, but what I'm > > actually looking for is a correlation between the behavioral output > > and the response of the neuron. There seems to be a high correlation > > between the behavior and the neuron in some respects, but the dynamics > > of the behavior and the neuron response are different, which is why I > > thought trying to model the neuron as a filter of the > > "input" (behavior) might be fruitful. > > > Despite not having total control of the input to the neuron, I can > > control the behavior in some ways. I can make it a "step" of > > different amplitudes or I can make it sinusoidal (within a limited > > frequency range). I can also probably do some arbitrary waveforms. > > However, white noise wouldn't be possible because of the limited > > bandwidth of the behavior. Accordingly, the "step" isn't really a > > true step in that it takes about 50 msec to get to the new level. But > > this point is probably moot if the neuron isn't linear, which is how > > things are looking. > > > Jim, you mentioned that even if the system isn't linear it could > > possibly still be simple to model. How might I go about determining > > whether this is the case? > > First of all I'm not completely convinced that you are inputting a step > and getting a response from that simply because you say that's what your > doing. But for the purposes of this discussion we will assume that is > what is going on. > > As I said before what you have already done is all you need to do to > extract the frequency response of the system and model it as a > convolution process __if it was linear__. So if it was linear the task > would be dead simple. > > There are many non-linear systems that are also simple. For instance > the ABS() function is not linear but would be pretty easy to discover if > that was what your system looked like. But there are an infinity of > possible non-linear systems. So you are going to need a lot more data. > > As I said before try different amplitude steps as input. You already > know that if you scale the input by -1 the output does not scale > proportionally. That pretty much tells you it is not linear. The > saturation you mentioned also suggest it is not linear. But it still is > possible that if you keep the input signal to within a certain narrow > range of amplitudes it may behave in a linear fashion within that range. > For instance, the ABS function is perfectly linear if you only feed it > positive valued data. > > -jim > > > > > > > shane > > > On Jul 22, 12:09 am, gyansor...@gmail.com wrote: > > > On Jul 22, 11:25 am, julius <juli...@gmail.com> wrote: > > > > > On Jul 20, 7:11 pm, shei...@gmail.com wrote: > > > > > > Hi, > > > > > > I'm a biologist so I don't have much experience designing filters, but > > > > > I think I need to apply a filter to some time series data in order to > > > > > model a biological system. > > > > > > The problem: > > > > > I know the step response of the system and I need to design a filter > > > > > based on this. The best way I can describe the step response is that > > > > > it has a logarithmic-like rise that saturates. Based on my cursory > > > > > understanding of signal processing, this makes me think that I need a > > > > > non-linear phase filter (since the step response is not symmetric). > > > > > Also, because I'm trying to model a biological system it's important > > > > > to use a casual filter. To add some more complexity, the system has > > > > > different step responses, depending on the polarity of the step. The > > > > > general shape of the curve is the same, but the time constants are > > > > > different. So for instance, the time constant is 230 msec for > > > > > positive steps, 80 msec for negative. > > > > > [snip] > > > > > Shane, > > > > > To back off a bit, when you are trying to model a system as a filter, > > > > in the sense that the input-output is described by a convolution, > > > > you are already implicitly assuming that the system is linear and > > > > time-invariant. Do you think that this is the case? Just wondering > > > > out loud, since you didn't explain this part in your original post. > > > > > Julius > > > > If I could I would feed white noise into the system rather than a step > > > and take the power spectral density of the output -and average of > > > course over time. Assuming minimum phase you could get the transfer > > > function of the system. All assuming it is approx linear I suppose > > > which giving it is biological it most probably is not. > > ----== Posted via Newsfeeds.Com - Unlimited-Unrestricted-Secure Usenet News==----http://www.newsfeeds.comThe #1 Newsgroup Service in the World! 120,000+ Newsgroups > ----= East and West-Coast Server Farms - Total Privacy via Encryption =----
Reply by ●July 22, 20072007-07-22
On Jul 22, 12:09 am, gyansor...@gmail.com wrote:> On Jul 22, 11:25 am, julius <juli...@gmail.com> wrote: > > > > > On Jul 20, 7:11 pm, shei...@gmail.com wrote: > > > > Hi, > > > > I'm a biologist so I don't have much experience designing filters, but > > > I think I need to apply a filter to some time series data in order to > > > model a biological system. > > > > The problem: > > > I know the step response of the system and I need to design a filter > > > based on this. The best way I can describe the step response is that > > > it has a logarithmic-like rise that saturates. Based on my cursory > > > understanding of signal processing, this makes me think that I need a > > > non-linear phase filter (since the step response is not symmetric). > > > Also, because I'm trying to model a biological system it's important > > > to use a casual filter. To add some more complexity, the system has > > > different step responses, depending on the polarity of the step. The > > > general shape of the curve is the same, but the time constants are > > > different. So for instance, the time constant is 230 msec for > > > positive steps, 80 msec for negative. > > > [snip] > > > Shane, > > > To back off a bit, when you are trying to model a system as a filter, > > in the sense that the input-output is described by a convolution, > > you are already implicitly assuming that the system is linear and > > time-invariant. Do you think that this is the case? Just wondering > > out loud, since you didn't explain this part in your original post. > > > Julius > > If I could I would feed white noise into the system rather than a step > and take the power spectral density of the output -and average of > course over time. Assuming minimum phase you could get the transfer > function of the system. All assuming it is approx linear I suppose > which giving it is biological it most probably is not.Yep, that approach would be ok if the system was linear and time- invariant in the first place. In fact, it is sufficient to give a signal that is white in first-order, not second-order, to get a good estimate. Many people have worked on a model for biological systems, but they are almost never purely linear, time-invariant. Julius






