I want to simulate a multipath fading channel, different amplitude and delay is given. I want to use delay in padding style. I read that the different values for delay like [0 .6 3.1 ...] represent the delay between the first and last signal arrival? Giving the number of paths, How to simulate it? regards


@MohammedFatehy If you put up -exactly- what you currently know and have, we can help you more.

Generally speaking, let us say you have a signal x[n]. And lets say your sampling rate is 1 Hz. So you take one sample every second.

Now you want to construct a channel for multipath. Right off the bat, your multipath channel is going to be an FIR filter btw. Let us say someone tells you, "your first echo is going to be 5 seconds away, and attenuates the amplitude by 50%. The second echo is going to be 8 seconds away, and attenuates the amplitude by 70%".

Now, your channel is going to be simply a vector, (call it channel), such that: channel = [1 0 0 0 0 0.5 0 0 0.3]. (You have the 1 in the beginning, because that is the 'line of sight' co-efficient. That is, the signal without any echos).

Now, you simply filter your signal x[n] with channel, and you have a multipath response. Does that make sense?

  • $\begingroup$ Great, thanks a lot, totally appreciate your help $\endgroup$ – Mohammed Jun 20 '13 at 11:28
  • $\begingroup$ actually, I want to use IEEE 802.15.6 CM3 model, this what I meant it is given. the matlab file outputs vector for delay, # of paths and attenuation for each path. so I use this as for every path, multiply my signal with attenuation and pad zeros equal to the delay and then sum all copies together. is that correct? $\endgroup$ – Mohammed Jun 20 '13 at 11:40
  • $\begingroup$ @Mohammed مافي مشكل ;-) (PS you can upvote the answer if you liked it). I am not familiar with that specific IEEE 802.15.6 CM3 model, however it will be the same concept. Usually those models are derived empirically. $\endgroup$ – Spacey Jun 20 '13 at 15:17
  • $\begingroup$ As far as what you are doing, you just literally need to do multipath = conv(signal, channel). Conceptually, you take your original signal. Save it. Make a copy, but delayed by some amount. (Put zeros in front of it). Multiply this delayed vector by some attenuation factor. Then add to the original. This is what is conceptually happening... if you do it as a convolution, it works out that way. Just think about it conceptually, it is not complicated. You make echos, then just add them up. $\endgroup$ – Spacey Jun 20 '13 at 15:19
  • $\begingroup$ جزيت خيرا I tried to upvote the answer but because my reputation is less than 15 I couldn't. $\endgroup$ – Mohammed Jun 21 '13 at 1:58

Create a copy of your signal vector for each path, add zeros to its beginning according to how much delay you have. Add noise to each of them, then add them all up.

  • $\begingroup$ thanks, but I'm confused with the delay value... I use the delay given (in ns) and convert it to number of bits (dividing by the pulse width). Should I use the value given directly or the different between the current delay and previous one? $\endgroup$ – Mohammed Jun 19 '13 at 8:51
  • 1
    $\begingroup$ Depends on what you define the delay to be... Are they relative, are they absolute? You should know, not me. $\endgroup$ – Nils Werner Jun 19 '13 at 10:15
  • $\begingroup$ by checking the channel file (not mine), the delay is cumulative one. so, should I use difference between them?? $\endgroup$ – Mohammed Jun 19 '13 at 13:19

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.