DSPRelated.com
Forums

Any faster method to apply convolution?

Started by commengr December 9, 2009
Hello,

I am simulating the performance of an OFDM based communication system,
where I convolve OFDM symbols with the Channel Impulse Response (7-Tap
Rayleigh distributed)

The problem is that Matlab function conv( ) takes a lot of processing
time. I tried to declare the output variable as a vector of zeros. This did
help, but only slightly.

Under Monte Carlo's method, it gets really annoying. Another alternate is
the filter( ) command, where I can assume the channel is an FIR filter,
however, this approach makes the use of cyclic prefix redundant (changing
CP does not have any affect on BER)

Any suggestions?


---
Oh, by the way, since the data is not cyclic, I can't do Fast Convolution
via DFT


On an unrelated matter, after modeling the channel as an FIR filter and
checking its frequency response using the freqz( ) function, the phase
apparently shows as 'non-linear', so many books say that phase of an FIR
filter is always linear like Ifeachor's book etc


On 9 Des, 17:02, "commengr" <communications_engin...@yahoo.com> wrote:
> Hello, > > I am simulating the performance of an OFDM based communication system, > where I convolve OFDM symbols with the Channel Impulse Response (7-Tap > Rayleigh distributed) > > The problem is that Matlab function conv( ) takes a lot of processing > time.
> Oh, by the way, since the data is not cyclic, I can't do Fast Convolution > via DFT
IDIOT!! You, for listening to the delusions of almost all the regulars here; Almost all the regulars for messing around with the cyclic proerties of the DFT causing this kind of confusion among the incopmpetent and mentally challenged! Of course you can use the DFT. Just zero-pad the data sufficiently to avoid the wrap-around effects. This is so basic that it is covered in *all* textbooks on DSP. Rune
On Wed, 09 Dec 2009 10:02:20 -0600, "commengr"
<communications_engineer@yahoo.com> wrote:

>On an unrelated matter, after modeling the channel as an FIR filter and >checking its frequency response using the freqz( ) function, the phase >apparently shows as 'non-linear', so many books say that phase of an FIR >filter is always linear like Ifeachor's book etc
The phase of a FIR filter CAN BE linear, but does not have to be. This is really fundamental stuff. If your text is teaching that all FIR filters exhibit linear phase, then it is a very bad book. Greg
>On 9 Des, 17:02, "commengr" <communications_engin...@yahoo.com> wrote: >> Hello, >> >> I am simulating the performance of an OFDM based communication system, >> where I convolve OFDM symbols with the Channel Impulse Response (7-Tap >> Rayleigh distributed) >> >> The problem is that Matlab function conv( ) takes a lot of processing >> time. > >> Oh, by the way, since the data is not cyclic, I can't do Fast
Convolution
>> via DFT > >IDIOT!! > >You, for listening to the delusions of almost all the >regulars here; Almost all the regulars for messing around >with the cyclic proerties of the DFT causing this >kind of confusion among the incopmpetent and mentally >challenged! > >Of course you can use the DFT. Just zero-pad the data >sufficiently to avoid the wrap-around effects. This is >so basic that it is covered in *all* textbooks on DSP. > >Rune >
=========================================================== RUNE, THERE ARE BETTER WAYS TO START AN ANSWER! I think your answer is offensive! If you thought it was a poor question you should have not answer it! =========================================================== I do not want to increase the number of bits to what I already have due to monte carlo.
>On Wed, 09 Dec 2009 10:02:20 -0600, "commengr" ><communications_engineer@yahoo.com> wrote: > >>On an unrelated matter, after modeling the channel as an FIR filter and >>checking its frequency response using the freqz( ) function, the phase >>apparently shows as 'non-linear', so many books say that phase of an
FIR
>>filter is always linear like Ifeachor's book etc > >The phase of a FIR filter CAN BE linear, but does not have to be. > >This is really fundamental stuff. If your text is teaching that all FIR
filters
>exhibit linear phase, then it is a very bad book. > >Greg >
Thanks Greg. Any idea on a faster method for convolution?
On 12/9/2009 9:02 AM, commengr wrote:
> Hello, > > I am simulating the performance of an OFDM based communication system, > where I convolve OFDM symbols with the Channel Impulse Response (7-Tap > Rayleigh distributed) > > The problem is that Matlab function conv( ) takes a lot of processing > time. I tried to declare the output variable as a vector of zeros. This did > help, but only slightly. > > Under Monte Carlo's method, it gets really annoying. Another alternate is > the filter( ) command, where I can assume the channel is an FIR filter, > however, this approach makes the use of cyclic prefix redundant (changing > CP does not have any affect on BER) > > Any suggestions? > > > --- > Oh, by the way, since the data is not cyclic, I can't do Fast Convolution > via DFT > > > On an unrelated matter, after modeling the channel as an FIR filter and > checking its frequency response using the freqz( ) function, the phase > apparently shows as 'non-linear', so many books say that phase of an FIR > filter is always linear like Ifeachor's book etc > >
Symmetric FIRs guarantee linear phase, in other cases the phase is not necessarily linear. Minimum phase FIRs are generally not linear phase. Anything in between is also possible. You might try a loop with dot products in Matlab. Using array or matrix functions is what it's good at. Otherwise recoding in C or something suitable might be an option. -- Eric Jacobsen Minister of Algorithms Abineau Communications http://www.abineau.com
On Wed, 09 Dec 2009 10:58:48 -0600, "commengr"
<communications_engineer@yahoo.com> wrote:

>Thanks Greg. Any idea on a faster method for convolution?
Rune actually covered it. Zeropad sufficiently to ensure linear convolution, and use the FFT:multiply:IFFT. I had thought that the Matlab conv() function already used the FFT, but after digging a little bit it appears that it does not. So the FFT may save you some time. Greg
>>On 9 Des, 17:02, "commengr" <communications_engin...@yahoo.com> wrote: >>> Hello, >>> >>> I am simulating the performance of an OFDM based communication
system,
>>> where I convolve OFDM symbols with the Channel Impulse Response
(7-Tap
>>> Rayleigh distributed) >>> >>> The problem is that Matlab function conv( ) takes a lot of processing >>> time. >> >>> Oh, by the way, since the data is not cyclic, I can't do Fast >Convolution >>> via DFT >> >>IDIOT!! >> >>You, for listening to the delusions of almost all the >>regulars here; Almost all the regulars for messing around >>with the cyclic proerties of the DFT causing this >>kind of confusion among the incopmpetent and mentally >>challenged! >> >>Of course you can use the DFT. Just zero-pad the data >>sufficiently to avoid the wrap-around effects. This is >>so basic that it is covered in *all* textbooks on DSP. >> >>Rune >> > >=========================================================== > >RUNE, THERE ARE BETTER WAYS TO START AN ANSWER! > >I think your answer is offensive! > >If you thought it was a poor question you should have not >answer it! >=========================================================== > >I do not want to increase the number of bits to what I already have due
to
> >monte carlo.
There are better ways to start an education, too. You are trying to do OFDM (something reasonably advanced), yet you clearly don't understand the basics of FIRs or DFTs (entry level stuff). Are you trying to live life backwards? Steve
commengr wrote:
>> On 9 Des, 17:02, "commengr" <communications_engin...@yahoo.com> wrote: >>> Hello, >>> >>> I am simulating the performance of an OFDM based communication system, >>> where I convolve OFDM symbols with the Channel Impulse Response (7-Tap >>> Rayleigh distributed) >>> >>> The problem is that Matlab function conv( ) takes a lot of processing >>> time. >>> Oh, by the way, since the data is not cyclic, I can't do Fast > Convolution >>> via DFT >> IDIOT!! >> >> You, for listening to the delusions of almost all the >> regulars here; Almost all the regulars for messing around >> with the cyclic proerties of the DFT causing this >> kind of confusion among the incopmpetent and mentally >> challenged! >> >> Of course you can use the DFT. Just zero-pad the data >> sufficiently to avoid the wrap-around effects. This is >> so basic that it is covered in *all* textbooks on DSP. >> >> Rune >> > > =========================================================== > > RUNE, THERE ARE BETTER WAYS TO START AN ANSWER! > > I think your answer is offensive! > > If you thought it was a poor question you should have not > answer it! > =========================================================== > > I do not want to increase the number of bits to what I already have due to > > monte carlo.
Zero padding is always necessary with fast convolution. Without it, you get circular convolution. Rune was exactly right. Why in the world are you messing with Monte Carlo randomizing? even a linear congruential RNG should be good enough. Jerry -- Engineering is the art of making what you want from things you can get. &#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;
On Dec 9, 11:02&#4294967295;am, "commengr" <communications_engin...@yahoo.com>
wrote:
> Hello, > > I am simulating the performance of an OFDM based communication system, > where I convolve OFDM symbols with the Channel Impulse Response (7-Tap > Rayleigh distributed) > > The problem is that Matlab function conv( ) takes a lot of processing > time. I tried to declare the output variable as a vector of zeros. This did > help, but only slightly. > > Under Monte Carlo's method, it gets really annoying. Another alternate is > the filter( ) command, where I can assume the channel is an FIR filter, > however, this approach makes the use of cyclic prefix redundant (changing > CP does not have any affect on BER) > > Any suggestions? > > --- > Oh, by the way, since the data is not cyclic, I can't do Fast Convolution > via DFT >
Try replacing conv() with fftfilt(), and oh by the way your assertion is false. John