Discover MakerZone

MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn more

Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply Today

Thread Subject:
how to obtain CSI from rayleighchan pathgains?

Subject: how to obtain CSI from rayleighchan pathgains?

From: Robert Orzechowski

Date: 31 Jan, 2010 21:15:05

Message: 1 of 14

Hi, I have a SOVA decoder, which needs CSI to works fine.
I am using rayleighchan built-in function :

tau=0:5e-8:5e-7;
%path gain dB
pdb=[0.6286 0.4895 0.3813 0.2969 0.2312 0.1201 0.1403 0.1092 0.085 0.0662 0.0515];
chan = rayleighchan(4e-6, 200, tau, pdb);
chan.ResetBeforeFiltering = false;
chan.StoreHistory = true; %since matlab 2006a

y = filter(chan,trans);
h=chan.PathGains;

In this case I have 11 taps. So matrix h (in time domain) has a size FFT x 11.
How to get CSI ? doing simple fft(h) is not a good idea, since i got also 11 samples for the symbol given.
How to get channel state information if I have 11 path's gains

Please help me.
Robert

Subject: how to obtain CSI from rayleighchan pathgains?

From: Idin Motedayen-Aval

Date: 3 Feb, 2010 20:41:25

Message: 2 of 14

Robert Orzechowski wrote:
> Hi, I have a SOVA decoder, which needs CSI to works fine.
> I am using rayleighchan built-in function :
>
> tau=0:5e-8:5e-7;
> %path gain dB pdb=[0.6286 0.4895 0.3813 0.2969 0.2312 0.1201 0.1403
> 0.1092 0.085 0.0662 0.0515];
> chan = rayleighchan(4e-6, 200, tau, pdb);
> chan.ResetBeforeFiltering = false;
> chan.StoreHistory = true; %since matlab 2006a
>
> y = filter(chan,trans);
> h=chan.PathGains;
>
> In this case I have 11 taps. So matrix h (in time domain) has a size FFT
> x 11.
> How to get CSI ? doing simple fft(h) is not a good idea, since i got
> also 11 samples for the symbol given.
> How to get channel state information if I have 11 path's gains
> Please help me.
> Robert

Hi Robert,
You already have your CSI. If you have the gain of each path, that's
your channel's state. Now it's up to you to figure out how you want to
use that information. If you're stuck on this point, do some reading on
equalization.
One idea might be to use a static filter first. Forget the fading
channel for now; just use a randomly generated 11-tap filter, and see if
you can deal with the signal after that filter (can you undo the effect
of the filter). Then you can worry about the time-varying nature of the
channel.

HTH,
Idin

--
Idin Motedayen-Aval
The MathWorks, Inc.
zq=[4 2 5 -15 -1 -3 24 -57 45 -12 19 -12 15 -8 3 -7 8 -69 53 12 -2];
char(filter(1,[1,-1],[105 zq])), clear zq

Subject: how to obtain CSI from rayleighchan pathgains?

From: mahmud_dbm

Date: 17 Feb, 2010 19:38:23

Message: 3 of 14

Dear Sir,

I'm stuck with a problem in Rayleigh channel function, rayleighchan(ts,fd,tau,pdb),
now what is the actual "ts" i.e InputSamplePeriod for OFDM transmission,

Say my Operating frequency is 2.4GHz, and channel BW is 20MHz, and FFT size or Number of Bits per Symbol say it is 64, .. or how they'd be related to "InputSamplePeriod".... i need actual and exact value of "ts" for OFDM.

Help me out..

Subject: how to obtain CSI from rayleighchan pathgains?

From: Robert Orzechowski

Date: 17 Feb, 2010 20:43:21

Message: 4 of 14

"mahmud_dbm " <mahmud_dbm@yahoo.com> wrote in message <hlhgjf$7e1$1@fred.mathworks.com>...
> Dear Sir,
>
> I'm stuck with a problem in Rayleigh channel function, rayleighchan(ts,fd,tau,pdb),
> now what is the actual "ts" i.e InputSamplePeriod for OFDM transmission,
>
> Say my Operating frequency is 2.4GHz, and channel BW is 20MHz, and FFT size or Number of Bits per Symbol say it is 64, .. or how they'd be related to "InputSamplePeriod".... i need actual and exact value of "ts" for OFDM.
>
> Help me out..


Seems like this is 802.11 channel, right ?
chan = rayleighchan(4e-6, 200, tau, pdb);

Please let me know if you find the solution how to get CSI from filter function....

Subject: how to obtain CSI from rayleighchan pathgains?

From: Robert Orzechowski

Date: 17 Feb, 2010 20:47:07

Message: 5 of 14

"mahmud_dbm " <mahmud_dbm@yahoo.com> wrote in message <hlhgjf$7e1$1@fred.mathworks.com>...
> Dear Sir,
>
> I'm stuck with a problem in Rayleigh channel function, rayleighchan(ts,fd,tau,pdb),
> now what is the actual "ts" i.e InputSamplePeriod for OFDM transmission,
>
> Say my Operating frequency is 2.4GHz, and channel BW is 20MHz, and FFT size or Number of Bits per Symbol say it is 64, .. or how they'd be related to "InputSamplePeriod".... i need actual and exact value of "ts" for OFDM.
>
> Help me out..

Seems like you have 802.11 channel right ?
chan = rayleighchan(4e-6, 200, tau, pdb);

Let me know if you find how to get CSI from filter function...

regards,
Robert

Subject: how to obtain CSI from rayleighchan pathgains?

From: Robert Orzechowski

Date: 17 Feb, 2010 20:48:05

Message: 6 of 14

Idin Motedayen-Aval <run.signature@MATLAB.for.email> wrote in message <hkcn1l$r42$1@fred.mathworks.com>...
> Robert Orzechowski wrote:
> > Hi, I have a SOVA decoder, which needs CSI to works fine.
> > I am using rayleighchan built-in function :
> >
> > tau=0:5e-8:5e-7;
> > %path gain dB pdb=[0.6286 0.4895 0.3813 0.2969 0.2312 0.1201 0.1403
> > 0.1092 0.085 0.0662 0.0515];
> > chan = rayleighchan(4e-6, 200, tau, pdb);
> > chan.ResetBeforeFiltering = false;
> > chan.StoreHistory = true; %since matlab 2006a
> >
> > y = filter(chan,trans);
> > h=chan.PathGains;
> >
> > In this case I have 11 taps. So matrix h (in time domain) has a size FFT
> > x 11.
> > How to get CSI ? doing simple fft(h) is not a good idea, since i got
> > also 11 samples for the symbol given.
> > How to get channel state information if I have 11 path's gains
> > Please help me.
> > Robert
>
> Hi Robert,
> You already have your CSI. If you have the gain of each path, that's
> your channel's state. Now it's up to you to figure out how you want to
> use that information. If you're stuck on this point, do some reading on
> equalization.
> One idea might be to use a static filter first. Forget the fading
> channel for now; just use a randomly generated 11-tap filter, and see if
> you can deal with the signal after that filter (can you undo the effect
> of the filter). Then you can worry about the time-varying nature of the
> channel.
>
> HTH,
> Idin
>
> --
> Idin Motedayen-Aval
> The MathWorks, Inc.
> zq=[4 2 5 -15 -1 -3 24 -57 45 -12 19 -12 15 -8 3 -7 8 -69 53 12 -2];
> char(filter(1,[1,-1],[105 zq])), clear zq


I would like to ask you for some more hints, please... I still cannot deal with it.
Thank you in advance,
Robert

Subject: how to obtain CSI from rayleighchan pathgains?

From: Robert Orzechowski

Date: 17 Feb, 2010 22:39:21

Message: 7 of 14

"Robert Orzechowski" <orzechowskirobert@yahoo.com> wrote in message <hlhkm5$5f8$1@fred.mathworks.com>...
> Idin Motedayen-Aval <run.signature@MATLAB.for.email> wrote in message <hkcn1l$r42$1@fred.mathworks.com>...
> > Robert Orzechowski wrote:
> > > Hi, I have a SOVA decoder, which needs CSI to works fine.
> > > I am using rayleighchan built-in function :
> > >
> > > tau=0:5e-8:5e-7;
> > > %path gain dB pdb=[0.6286 0.4895 0.3813 0.2969 0.2312 0.1201 0.1403
> > > 0.1092 0.085 0.0662 0.0515];
> > > chan = rayleighchan(4e-6, 200, tau, pdb);
> > > chan.ResetBeforeFiltering = false;
> > > chan.StoreHistory = true; %since matlab 2006a
> > >
> > > y = filter(chan,trans);
> > > h=chan.PathGains;
> > >
> > > In this case I have 11 taps. So matrix h (in time domain) has a size FFT
> > > x 11.
> > > How to get CSI ? doing simple fft(h) is not a good idea, since i got
> > > also 11 samples for the symbol given.
> > > How to get channel state information if I have 11 path's gains
> > > Please help me.
> > > Robert
> >
> > Hi Robert,
> > You already have your CSI. If you have the gain of each path, that's
> > your channel's state. Now it's up to you to figure out how you want to
> > use that information. If you're stuck on this point, do some reading on
> > equalization.
> > One idea might be to use a static filter first. Forget the fading
> > channel for now; just use a randomly generated 11-tap filter, and see if
> > you can deal with the signal after that filter (can you undo the effect
> > of the filter). Then you can worry about the time-varying nature of the
> > channel.
> >
> > HTH,
> > Idin
> >
> > --
> > Idin Motedayen-Aval
> > The MathWorks, Inc.
> > zq=[4 2 5 -15 -1 -3 24 -57 45 -12 19 -12 15 -8 3 -7 8 -69 53 12 -2];
> > char(filter(1,[1,-1],[105 zq])), clear zq
>
>
> I would like to ask you for some more hints, please... I still cannot deal with it.
> Thank you in advance,
> Robert

I wanted to add, that I need ideal CSI ( I just would like to run some simple SOVA simulation).
As far as I read about equalization it is estimating the channel, right ?

Subject: how to obtain CSI from rayleighchan pathgains?

From: Idin Motedayen-Aval

Date: 18 Feb, 2010 12:27:14

Message: 8 of 14

Robert Orzechowski wrote:
> "Robert Orzechowski" <orzechowskirobert@yahoo.com> wrote in message
> <hlhkm5$5f8$1@fred.mathworks.com>...
>> Idin Motedayen-Aval <run.signature@MATLAB.for.email> wrote in message
>> <hkcn1l$r42$1@fred.mathworks.com>...
>> > Robert Orzechowski wrote:
>> > > Hi, I have a SOVA decoder, which needs CSI to works fine.
>> > > I am using rayleighchan built-in function :
>> > > > > tau=0:5e-8:5e-7;
>> > > %path gain dB pdb=[0.6286 0.4895 0.3813 0.2969 0.2312 0.1201
>> 0.1403 > > 0.1092 0.085 0.0662 0.0515];
>> > > chan = rayleighchan(4e-6, 200, tau, pdb);
>> > > chan.ResetBeforeFiltering = false;
>> > > chan.StoreHistory = true; %since matlab 2006a
>> > > > > y = filter(chan,trans);
>> > > h=chan.PathGains;
>> > > > > In this case I have 11 taps. So matrix h (in time domain) has
>> a size FFT > > x 11.
>> > > How to get CSI ? doing simple fft(h) is not a good idea, since i
>> got > > also 11 samples for the symbol given.
>> > > How to get channel state information if I have 11 path's gains
>> > > Please help me.
>> > > Robert
>> > > Hi Robert,
>> > You already have your CSI. If you have the gain of each path,
>> that's > your channel's state. Now it's up to you to figure out how
>> you want to > use that information. If you're stuck on this point, do
>> some reading on > equalization.
>> > One idea might be to use a static filter first. Forget the fading >
>> channel for now; just use a randomly generated 11-tap filter, and see
>> if > you can deal with the signal after that filter (can you undo the
>> effect > of the filter). Then you can worry about the time-varying
>> nature of the > channel.
>> > > HTH,
>> > Idin
>> > > -- > Idin Motedayen-Aval
>> > The MathWorks, Inc.
>> > zq=[4 2 5 -15 -1 -3 24 -57 45 -12 19 -12 15 -8 3 -7 8 -69 53 12 -2];
>> > char(filter(1,[1,-1],[105 zq])), clear zq
>>
>>
>> I would like to ask you for some more hints, please... I still cannot
>> deal with it.
>> Thank you in advance,
>> Robert
>
> I wanted to add, that I need ideal CSI ( I just would like to run some
> simple SOVA simulation). As far as I read about equalization it is
> estimating the channel, right ?

Hi Robert,
Equalization usually does refer to estimating the channel, but its
concepts apply equally well here. In this case you know the channel
exactly. A fading channel is nothing but a time-varying filter. Some
genie told you what that filter is. So if you could invert that filter,
you would be done.
If your channel had a single tap, this would be easy: the channel
multiplies your signal with a complex gain, and if you know that gain,
you can simply divide by it at the receiver.
It's more complicated for multiple taps, but it's the same idea. You
basically need to run the received signal through the inverse of the
channel filter.

--
Idin Motedayen-Aval
The MathWorks, Inc.
zq=[4 2 5 -15 -1 -3 24 -57 45 -12 19 -12 15 -8 3 -7 8 -69 53 12 -2];
char(filter(1,[1,-1],[105 zq])), clear zq

Subject: how to obtain CSI from rayleighchan pathgains?

From: mahmud_dbm

Date: 20 Feb, 2010 01:20:08

Message: 9 of 14

Dear Sir,

Question is about getting CSI from the channel, well, i'm using reyleighchan, say for 1000 bits of 100 parallel streams. now i set my channel with chan=rayleighchan and some required parameters, then coeff=chan.PathGain; wud give me the channel status and at the receiver i simply divide received streams by coeff; and i'm getting exact performance.

Now my question is
What kind of Equalization is this, i think it is somewhat more than adaptive equalization, because i'm getting 100 different Coeffs for 100 different streams and i'm simply dividing by the status very easily, now in practice "which kind of Equalization" wud give me this Performance..????

Practically how would i get this status directly like this. ? or is it possible at all.?
Note: My System doesn't have pilot or anything to get CSI from the channel.

Thank You

Mahmud

Subject: how to obtain CSI from rayleighchan pathgains?

From: Robert Orzechowski

Date: 21 Feb, 2010 03:09:04

Message: 10 of 14

"mahmud_dbm " <mahmud_dbm@yahoo.com> wrote in message <hlndc8$5h1$1@fred.mathworks.com>...
> Dear Sir,
>
> Question is about getting CSI from the channel, well, i'm using reyleighchan, say for 1000 bits of 100 parallel streams. now i set my channel with chan=rayleighchan and some required parameters, then coeff=chan.PathGain; wud give me the channel status and at the receiver i simply divide received streams by coeff; and i'm getting exact performance.
>
> Now my question is
> What kind of Equalization is this, i think it is somewhat more than adaptive equalization, because i'm getting 100 different Coeffs for 100 different streams and i'm simply dividing by the status very easily, now in practice "which kind of Equalization" wud give me this Performance..????
>
> Practically how would i get this status directly like this. ? or is it possible at all.?
> Note: My System doesn't have pilot or anything to get CSI from the channel.
>
> Thank You
>
> Mahmud

Hello,

Do you use multipath propagation ? Like let say 11 taps :
pdb=[0.6286 0.4895 0.3813 0.2969 0.2312 0.1201 0.1403 0.1092 0.085 0.0662 0.0515];
chan = rayleighchan(4e-6, 200, tau, pdb);
y = filter(chan,trans);
coeff=chan.PathGains;

Then your coeff will be a matrix with size : length(trans) per 11 (no of paths/taps).
How do you compute the CSI now ?

One more question : what happens if there is ofdm transmission -> then you need to perform fft...

Thanks,
Robert

Subject: how to obtain CSI from rayleighchan pathgains?

From: mahmud_dbm

Date: 21 Feb, 2010 14:02:04

Message: 11 of 14

Dear Idin Sir..

I'm repeating my question, I'm using reyleighchan, say for 1000 bits of 100 parallel streams. now i set my channel with chan=rayleighchan and some required parameters, then coeff=chan.PathGain; wud give me the channel status and at the receiver i simply divide received streams by coeff; and i'm getting exact performance.

Now my question is
What kind of Equalization is this, i think it is somewhat more than adaptive equalization, because i'm getting 100 different Coeffs for 100 different streams and i'm simply dividing by the status very easily, now in practice "which kind of Equalization" wud give me this Performance..????

Practically how would i get this status directly like this. ? or is it possible at all.?
Note: My System doesn't have pilot or anything to get CSI from the channel.

Thank You

Mahmud

Subject: how to obtain CSI from rayleighchan pathgains?

From: mahmud_dbm

Date: 23 Feb, 2010 03:12:04

Message: 12 of 14


> Do you use multipath propagation ? Like let say 11 taps :
> pdb=[0.6286 0.4895 0.3813 0.2969 0.2312 0.1201 0.1403 0.1092 0.085 0.0662 0.0515];
> chan = rayleighchan(4e-6, 200, tau, pdb);
> y = filter(chan,trans);
> coeff=chan.PathGains;
>
> Then your coeff will be a matrix with size : length(trans) per 11 (no of paths/taps).
> How do you compute the CSI now ?
>
> One more question : what happens if there is ofdm transmission -> then you need to perform fft...
>
> Thanks,
> Robert


Thanks Robert..

I was trying to help you with this problem, i'm sorry i couldn't find what will happen if there are multiple number of coeffs.

anyway i think, we need some theoretical funda here, i mean what theoretically happens after traveling through different channels, as far i can remember, "different delay taps are there for different paths" to extract the exact signal from the delayed one... or something like that.

If i find the solution, i will let you know. All the best.

Subject: how to obtain CSI from rayleighchan pathgains?

From: Robert Orzechowski

Date: 23 Feb, 2010 21:08:02

Message: 13 of 14

"mahmud_dbm " <mahmud_dbm@yahoo.com> wrote in message <hlrecs$dob$1@fred.mathworks.com>...
> Dear Idin Sir..
>
> I'm repeating my question, I'm using reyleighchan, say for 1000 bits of 100 parallel streams. now i set my channel with chan=rayleighchan and some required parameters, then coeff=chan.PathGain; wud give me the channel status and at the receiver i simply divide received streams by coeff; and i'm getting exact performance.
>
> Now my question is
> What kind of Equalization is this, i think it is somewhat more than adaptive equalization, because i'm getting 100 different Coeffs for 100 different streams and i'm simply dividing by the status very easily, now in practice "which kind of Equalization" wud give me this Performance..????
>
> Practically how would i get this status directly like this. ? or is it possible at all.?
> Note: My System doesn't have pilot or anything to get CSI from the channel.
>
> Thank You
>
> Mahmud

Mahmud,
Dividing singal by the channel coeff is something like ZeroForcing, however, no receiver knows exact channel coefficient, so this is any kind of Equalization - this is just assuming perfect channel information state. Normally channel coeff, or channel are estimated from pilots or something else.
regards,
Robert

Could you write here down any simple MATLAB example ?

Subject: how to obtain CSI from rayleighchan pathgains?

From: mahmud_dbm

Date: 5 Mar, 2010 09:02:30

Message: 14 of 14

> Mahmud,
> Dividing singal by the channel coeff is something like ZeroForcing, however, no receiver knows exact channel coefficient, so this is any kind of Equalization - this is just assuming perfect channel information state. Normally channel coeff, or channel are estimated from pilots or something else.
> regards,
> Robert
>
> Could you write here down any simple MATLAB example ?

Dear Robert,

I doubt whether i really can get CSI directly like this practically...! till i don't get any exact equalization like this, i cant use this. because target is to practically get CSI and implement It.

anyway about your programming part.

Form OFDM symbol "Frame", then

                    chan = rayleighchan(Ts, fd);
                    chan.resetBeforeFiltering=1;
                   
                    for k=1:nS
                              chanbit(k,:)=filter(chan,Frame(k,:));
                              chanCoeff(k,:)=chan.PathGains;
                    end

                    nbit=awgn(chanbit,EbN0(i));

% nS is the number of the symbol
% because symbols are individually filtered.

% then at the receiver divide affected streams, will get equalized streams

                   eqbit=nbit./(repmat(chanCoeff,1,80));
% You Are Done.

Hope it Helps.

Regards

Mahmud

Tags for this Thread

What are tags?

A tag is like a keyword or category label associated with each thread. Tags make it easier for you to find threads of interest.

Anyone can tag a thread. Tags are public and visible to everyone.

Contact us