Reply by JAlbertoDJ February 4, 20162016-02-04
>On Wed, 03 Feb 2016 11:58:54 -0600, JAlbertoDJ wrote: > >>>On Wed, 03 Feb 2016 07:48:48 -0600, "JAlbertoDJ" <12823@DSPRelated> >>>wrote: >>> >>>>Hello, >>>> >>>>I am using the ifft for the typical channel estimation in the
frequency
>>>>domain, in this case using 64 carriers: >>>> >>>> ChannelEst= ifft( Y./X , 64); >>>> >>>>Y is the FFT of RX signal X is the FFT of TX signal >>>> >>>>When all the 64 FFT points are filled, the channel estimation is >>>>perfect. >>>> >>>>But if i only TX some carriers: [12:50] and the rest of carriers are >>>>zero, then the estimation channel has a lot of error. >>>> >>>>some idea? >>>> >>>>thanks >>> >>>The elements of X that are zero will be causing a divide-by-zero in >>>Y./X., If the elements of X are very small the energy in those >>>subcarriers will be amplified. That's probably not what you want. >>> >>> >>>Eric Jacobsen Anchor Hill Communications http://www.anchorhill.com >> >> >> You are agree, but i only divide Y./X. for the subcarriers position. >> Rest, >> i consider Y(n)=0, then Y(n)/X(n)=0 > >Then, AFAIK, your channel estimation is almost as good as it can get, at
>least in a mean-square sense. Moreover, if the noise is white and the >transmit power in the occupied channels equal, it's as good as it can >get, period (in the mean-square sense). > >-- >www.wescottdesign.com
This is my code filling only (11:51) subcarriers. No AWGN added, however estimation is bad. nCP = 8; % Ciclic prefix nFFT = 64; L = 5; %L channel NT = nFFT + nCP; % Random channel taps g = randn(L,1); g = g/norm(g); % generation of symbol X = randi([0 15],nFFT,1); %16QAM symbols modObj = modem.qammod(M); XD(1:10)=0; XD(11:51) = modulate(modObj,X(11:51)); % normalizing symbol power XD(52:nFFT)=0; x=ifft(XD,nFFT); xout = [x(nFFT-nCP+1:nFFT);x]; % add Ciclic prefix % channel convolution y = conv(xout,g); % Receiver processing y = y(nCP+1:NT); Y = fft(y,nFFT); % frequency doimain LS channel estimation HhatLS(1:10)=0; HhatLS(11:51) = Y(11:51)./XD(11:51); HhatLS(52:nFFT)=0; ghatLS = real(ifft(HhatLS,nFFT)); ghatLS=ghatLS(1:L); ghatLS = ghatLS/norm(ghatLS); Error=ghatLS-g; stem(Error) --------------------------------------- Posted through http://www.DSPRelated.com
Reply by Tim Wescott February 3, 20162016-02-03
On Wed, 03 Feb 2016 11:58:54 -0600, JAlbertoDJ wrote:

>>On Wed, 03 Feb 2016 07:48:48 -0600, "JAlbertoDJ" <12823@DSPRelated> >>wrote: >> >>>Hello, >>> >>>I am using the ifft for the typical channel estimation in the frequency >>>domain, in this case using 64 carriers: >>> >>> ChannelEst= ifft( Y./X , 64); >>> >>>Y is the FFT of RX signal X is the FFT of TX signal >>> >>>When all the 64 FFT points are filled, the channel estimation is >>>perfect. >>> >>>But if i only TX some carriers: [12:50] and the rest of carriers are >>>zero, then the estimation channel has a lot of error. >>> >>>some idea? >>> >>>thanks >> >>The elements of X that are zero will be causing a divide-by-zero in >>Y./X., If the elements of X are very small the energy in those >>subcarriers will be amplified. That's probably not what you want. >> >> >>Eric Jacobsen Anchor Hill Communications http://www.anchorhill.com > > > You are agree, but i only divide Y./X. for the subcarriers position. > Rest, > i consider Y(n)=0, then Y(n)/X(n)=0
Then, AFAIK, your channel estimation is almost as good as it can get, at least in a mean-square sense. Moreover, if the noise is white and the transmit power in the occupied channels equal, it's as good as it can get, period (in the mean-square sense). -- www.wescottdesign.com
Reply by JAlbertoDJ February 3, 20162016-02-03
>On Wed, 03 Feb 2016 07:48:48 -0600, "JAlbertoDJ" <12823@DSPRelated> >wrote: > >>Hello, >> >>I am using the ifft for the typical channel estimation in the frequency >>domain, in this case using 64 carriers: >> >> ChannelEst= ifft( Y./X , 64); >> >>Y is the FFT of RX signal >>X is the FFT of TX signal >> >>When all the 64 FFT points are filled, the channel estimation is >>perfect. >> >>But if i only TX some carriers: [12:50] and the rest of carriers are >>zero, then the estimation channel has a lot of error. >> >>some idea? >> >>thanks > >The elements of X that are zero will be causing a divide-by-zero in >Y./X., If the elements of X are very small the energy in those >subcarriers will be amplified. That's probably not what you want. > > >Eric Jacobsen >Anchor Hill Communications >http://www.anchorhill.com
You are agree, but i only divide Y./X. for the subcarriers position. Rest, i consider Y(n)=0, then Y(n)/X(n)=0 --------------------------------------- Posted through http://www.DSPRelated.com
Reply by Eric Jacobsen February 3, 20162016-02-03
On Wed, 03 Feb 2016 07:48:48 -0600, "JAlbertoDJ" <12823@DSPRelated>
wrote:

>Hello, > >I am using the ifft for the typical channel estimation in the frequency >domain, in this case using 64 carriers: > > ChannelEst= ifft( Y./X , 64); > >Y is the FFT of RX signal >X is the FFT of TX signal > >When all the 64 FFT points are filled, the channel estimation is >perfect. > >But if i only TX some carriers: [12:50] and the rest of carriers are >zero, then the estimation channel has a lot of error. > >some idea? > >thanks
The elements of X that are zero will be causing a divide-by-zero in Y./X., If the elements of X are very small the energy in those subcarriers will be amplified. That's probably not what you want. Eric Jacobsen Anchor Hill Communications http://www.anchorhill.com
Reply by JAlbertoDJ February 3, 20162016-02-03
Hello,

I am using the ifft for the typical channel estimation in the frequency
domain, in this case using 64 carriers:

  ChannelEst= ifft( Y./X , 64);

Y is the FFT of RX signal
X is the FFT of TX signal

When all the 64 FFT points are filled,  the channel estimation is
perfect.

But if i only TX some carriers: [12:50]  and the rest of carriers are
zero, then the estimation channel has a lot of error.

some idea?

thanks

---------------------------------------
Posted through http://www.DSPRelated.com