Hi, I'm currently doing project on OFDM based. I want to transmit my signal through a Rayleigh channel. assume that the received signal should be y(t)=x(t)*h(t)+n(t) or Y(f)=X(f)H(f)+N(f). I understand that in order to get y(t), we need to do a convolution between x(t) and h(t). let say, after IFFT in OFDM part, then I change the signal into serial where the data is in time domain. Now, I don't want to do the convolution part, where from my understanding convolution in time domain is multiplication in freq. domain. I came across this matlab codes % Rayleigh fading h = sqrt(0.5)*( randn( 1, symbols_per_frame) + j*randn( 1,symbols_per_frame) ); % complex noise noise = sqrt(variance)*( randn(1,symbols_per_frame) + j*randn(1,symbols_per_frame) ); % in all y = h.*x + noise; so my questions now are: 1. Is the matrix multiplication means circular convolution where it need me to change the time domain data back to freq. domain by FFT {x(t)}? 2. If I already do the FFT of the data, it is means that I don't needs to FFT it again at the receiver, right? 3. is the h in the above code is valid to implement? how can I define the doppler from the code? Please help me, I really stuck at this for so long. TQ

# circular convolution or matrix multiplication

Started by ●April 17, 2009

Reply by ●April 17, 20092009-04-17

On Apr 17, 7:58�am, "nhusna" <nhu...@ic.utm.my> wrote:> Hi, > I'm currently doing project on OFDM based. I want to transmit my signal > through a Rayleigh channel. assume that the received signal should be > y(t)=x(t)*h(t)+n(t) or Y(f)=X(f)H(f)+N(f). > > I understand that in order to get y(t), we need to do a convolution > between x(t) and h(t). let say, after IFFT in OFDM part, then I change the > signal into serial where the data is in time domain. Now, I don't want to > do the convolution part, where from my understanding convolution in time > domain is multiplication in freq. domain. > > I came across this matlab codes % Rayleigh fading > �h = sqrt(0.5)*( randn( 1, symbols_per_frame) + j*randn( > 1,symbols_per_frame) ); > �% complex noise > �noise = sqrt(variance)*( randn(1,symbols_per_frame) + > j*randn(1,symbols_per_frame) ); > �% in all > �y = h.*x + noise; > > so my questions now are: > > 1. Is the matrix multiplication means circular convolution where it need > me to change the time domain data back to freq. domain by FFT {x(t)}? > > 2. If I already do the FFT of the data, it is means that I don't needs to > FFT it again at the receiver, right? > > 3. is the h in the above code is valid to implement? how can I define the > doppler from the code? > > Please help me, I really stuck at this for so long. > TQI'm not going to read your code, but realize that in real life, neither your channel nor your signal is going to be periodic. The FFT is a fast version of the DFT, which is for periodic discrete-time signals both in time and in frequency. So how do you make sure that your simulation is realistic? Julius

Reply by ●April 19, 20092009-04-19

>I'm not going to read your code, but realize that in real life, >neither your channel nor your signal is going to be periodic. >The FFT is a fast version of the DFT, which is for periodic >discrete-time signals both in time and in frequency. > >So how do you make sure that your simulation is realistic? > >Julius >Usually, we will assume that the signal is periodic first in simulation to make the simplification of the analysis system (I guess...)

Reply by ●April 20, 20092009-04-20

On Apr 19, 10:51�pm, "nhusna" <nhu...@ic.utm.my> wrote:> >I'm not going to read your code, but realize that in real life, > >neither your channel nor your signal is going to be periodic. > >The FFT is a fast version of the DFT, which is for periodic > >discrete-time signals both in time and in frequency. > > >So how do you make sure that your simulation is realistic? > > >Julius > > Usually, we will assume that the signal is periodic first in simulation to > make the simplification of the analysis system (I guess...)What you need is to learn about "fast convolution," in particular about "overlap-add" and "overlap-save." This is an example of how a periodic operator can be applied to a non-periodic signal (or channel). Julius

Reply by ●April 20, 20092009-04-20

Let me try to give comment to your second question.> 2. If I already do the FFT of the data, it is means that I don't needs > to FFT it again at the receiver, right?In real system, signal is always be in time domain when transmitted within channel. Unless your concern is just creating Rayleigh channel model (which will not be used in overall OFDM system), you can not discard FFT block in receiver just because you have done it in channel model. After doing FFT and multiplication with H(f) in channel model, you should IFFT back that signal so the output of channel model is in time domain again. IMHO, it is important to make good system partition when creating a relative large system model. Felis

Reply by ●April 21, 20092009-04-21

TQ for all the comments. I have a question if we are using convolution function, for example, given x=[1 2 3 4] and h=[1 2 3 4 5], y1=conv(x,h) =[1 4 10 20 30 34 31 20] where the size of y=x+h-1 now, if I want to do the circular convolution, the size of matrix x and h should be the same as x+h, so I set x=[1 2 3 4 0 0 0 0 0] and h=[1 2 3 4 5 0 0 0 0] y=ifft(fft(x).*fft(h)) y2=y1 so my question is let say x is transmitted bit and h impulse response. the size of h is bigger than x. usually, at the channel part, we will do convolution between transmitted signal and channel response. if we do circular conv., we will padding the transmitted bit with zero. so, at the receiver, how can we extract back the signal since the size is already increase? can we just take y2=[1 4 10 20] since the original size of x is 4?

Reply by ●April 21, 20092009-04-21

>Hi, >I'm currently doing project on OFDM based. I want to transmit my signal >through a Rayleigh channel. assume that the received signal should be >y(t)=x(t)*h(t)+n(t) or Y(f)=X(f)H(f)+N(f). > >I understand that in order to get y(t), we need to do a convolution >between x(t) and h(t). let say, after IFFT in OFDM part, then I changethe>signal into serial where the data is in time domain. Now, I don't wantto>do the convolution part, where from my understanding convolution in time >domain is multiplication in freq. domain. > >I came across this matlab codes % Rayleigh fading > h = sqrt(0.5)*( randn( 1, symbols_per_frame) + j*randn( >1,symbols_per_frame) ); > % complex noise > noise = sqrt(variance)*( randn(1,symbols_per_frame) + >j*randn(1,symbols_per_frame) ); > % in all > y = h.*x + noise; > >so my questions now are: > >1. Is the matrix multiplication means circular convolution where it need >me to change the time domain data back to freq. domain by FFT {x(t)}? > >2. If I already do the FFT of the data, it is means that I don't needsto>FFT it again at the receiver, right? > >3. is the h in the above code is valid to implement? how can I definethe>doppler from the code? > >Please help me, I really stuck at this for so long. >TQ > > > > > > >You need to make a zeros padding to your input signal and your filter, you may better look at fast convolution with overlap add or overlap save method. Moctar