From: mahmud_dbm on 15 Nov 2009 07:38 dear sir, 1. i'm facing a problem and i hope u can help me out as i've seen you previous posts in the related field. i'm using matlab built in function mlseeq(x,chcffs,const,tblen,opmode) function. (Equalize linearly modulated signal using Viterbi algorithm) where "chcffs " is channel coefficient 'vector' but if i use chan= rayleighchan(Ts,fd,tau,pdb); it creates a channel 'object' not 'coeff vector', but i need to find the 'coefficient vector' of this channel what i basically need to input to mlseeq function. please give me any solution fot this.
From: Ethem Sozer on 16 Nov 2009 09:05 rayleighchan function creates a channel object that simulates a Rayleigh fading channel. The following is an example of what you will see when you first create one: >> h = rayleighchan h = ChannelType: 'Rayleigh' InputSamplePeriod: 1 DopplerSpectrum: [1x1 doppler.jakes] MaxDopplerShift: 0 PathDelays: 0 AvgPathGaindB: 0 NormalizePathGains: 1 StoreHistory: 0 StorePathGains: 0 PathGains: 0.0510 - 0.1054i ChannelFilterDelay: 0 ResetBeforeFiltering: 1 NumSamplesProcessed: 0 You can use the filter method of this object to pass your signals through the channel. In a script, it will look like this: % Transmitted signal x = myTransmitter(); % Simulate channel r = filter(h, x); At this point, the PathGains property of the channel object, h, contains the channel coefficients used: chCoeffs = h.PathGains; You can use chCoeffs in the MLSE equalizer. Note that the defualt channel has only one path. For an MLSE simulation you will probably need to configure the channel object as a multipath channel. You can get more details from the documentation. Try typing "doc rayleighchan" in the comman prompt. Also, read the "Fading Channels" section of the Communications Toolbox Users Guide. Hth, Ethem "mahmud_dbm " <mahmud_dbm(a)yahoo.com> wrote in message news:hdosn9$9h0$1(a)fred.mathworks.com... > dear sir, > > 1. > i'm facing a problem and i hope u can help me out as i've seen you > previous posts in the related field. > > i'm using matlab built in function mlseeq(x,chcffs,const,tblen,opmode) > function. > (Equalize linearly modulated signal using Viterbi algorithm) > > where "chcffs " is channel coefficient 'vector' > > but if i use chan= rayleighchan(Ts,fd,tau,pdb); it creates a channel > 'object' not 'coeff vector', but i need to find the 'coefficient vector' > of this channel what i basically need to input to mlseeq function. > > please give me any solution fot this.
From: Aurele Marc on 1 Dec 2009 05:40 Hi Ethem, I've read your message and i've tried to do exactly what you've said. But i get bad results (BER around 0.5). And what is strange, if i remove the equalization, i get better results than with equalization. The following code is the example that i've used: Ts = 3/812560; bitRate = 1/Ts; %%--- Channel parameters -------------- tau = [0 0.2e-6 0.5e-6 1.6e-6 2.3e-6 5e-6]; pdb = [-3 0 -2 -6 -8 -10]; fd = 2.5; % Create Rayleigh fading channel object. randn('state',12345); chan = rayleighchan(Ts,fd,tau,pdb); delay = chan.ChannelFilterDelay; M = 2; % DBPSK modulation order % MLSE equalizer parameters const = dpskmod([0:M-1],M); tbLen = 36; % Compute error rate for different values of SNR. SNR = 0:2:20; % Range of SNR values, in dB. MaxBlock = 1000; for n = 1:length(SNR) for block = 1:MaxBlock tx = randint(148,1,M); % Random bit stream tx_pad = [tx;zeros(delay,1)]; % Pad the signal for delay introduced by the channel dpskSig = dpskmod(tx_pad,M); % DPSK signal fadedSig = filter(chan,dpskSig); % Effect of channel h_coeff = chan.PathGains; % Channel Coefficients rxSig = awgn(fadedSig,SNR(n)); % Add Gaussian noise. eqSig = mlseeq(rxSig,h_coeff,const,tbLen,'rst',1); % Equalize signal rx = dpskdemod(rxSig,M); % Demodulate. rx = rx(delay+1:end); % Remove the first delay symbols (compensation of channel's delay) % Compute error rate. % Ignore first sample because of DPSK initial condition. tx = tx(2:end); rx = rx(2:end); [nErrors, tmpBER(block)] = biterr(tx,rx); fprintf(1,'block BER = %g\n',tmpBER(block)); end BER(n) = mean(tmpBER); end Why do i get bad results ? Is there any problem with the call of mlseeq function in the code ? In addition, if i want uncorrelated fading channels, should i set ResetBeforeFiltering property to 0 or 1 ? (I think i should set to 1 but i'm not sure). Any comment is welcome. Thanks for your help "Ethem Sozer" <esozer(a)mathworks.com> wrote in message <hdrm7h$pc7$1(a)fred.mathworks.com>... > rayleighchan function creates a channel object that simulates a Rayleigh > fading channel. The following is an example of what you will see when you > first create one: > > >> h = rayleighchan > > h = > > ChannelType: 'Rayleigh' > InputSamplePeriod: 1 > DopplerSpectrum: [1x1 doppler.jakes] > MaxDopplerShift: 0 > PathDelays: 0 > AvgPathGaindB: 0 > NormalizePathGains: 1 > StoreHistory: 0 > StorePathGains: 0 > PathGains: 0.0510 - 0.1054i > ChannelFilterDelay: 0 > ResetBeforeFiltering: 1 > NumSamplesProcessed: 0 > > > You can use the filter method of this object to pass your signals through > the channel. In a script, it will look like this: > > % Transmitted signal > x = myTransmitter(); > > % Simulate channel > r = filter(h, x); > > At this point, the PathGains property of the channel object, h, contains the > channel coefficients used: > > chCoeffs = h.PathGains; > > You can use chCoeffs in the MLSE equalizer. > > Note that the defualt channel has only one path. For an MLSE simulation you > will probably need to configure the channel object as a multipath channel. > You can get more details from the documentation. Try typing "doc > rayleighchan" in the comman prompt. Also, read the "Fading Channels" > section of the Communications Toolbox Users Guide. > > Hth, > Ethem > > > > "mahmud_dbm " <mahmud_dbm(a)yahoo.com> wrote in message > news:hdosn9$9h0$1(a)fred.mathworks.com... > > dear sir, > > > > 1. > > i'm facing a problem and i hope u can help me out as i've seen you > > previous posts in the related field. > > > > i'm using matlab built in function mlseeq(x,chcffs,const,tblen,opmode) > > function. > > (Equalize linearly modulated signal using Viterbi algorithm) > > > > where "chcffs " is channel coefficient 'vector' > > > > but if i use chan= rayleighchan(Ts,fd,tau,pdb); it creates a channel > > 'object' not 'coeff vector', but i need to find the 'coefficient vector' > > of this channel what i basically need to input to mlseeq function. > > > > please give me any solution fot this. >
|
Pages: 1 Prev: OPEN CHANNEL FLOW profiles Next: How to plot values while using Matlab optimization toolbox |