Continue to Site

Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

[MATLAB]single carrier frequency domain equalization in continuous time

Status
Not open for further replies.

David83

Advanced Member level 1
Advanced Member level 1
Joined
Jan 21, 2011
Messages
410
Helped
45
Reputation
92
Reaction score
45
Trophy points
1,308
Visit site
Activity points
3,639
Hello all,

Can anyone help me implementing single carrier frequency domain equalization (SC-FDE) in continuous time in MATLAB, please? I have the math, but I don't know how to do it in MATLAB!!

Thanks
 
Last edited by a moderator:

Re: I need this in MATLAB

OK, first of all suppose that the passband transmitted signal is given by:

\[s(t)=\Re\left\{e^{j2*pi f_c t}\sum_{k=-N_g}^{N_d}d_k\,g(t-kT_s)\right\}\]

where f_c is the carrier frequency, Ng and Nd are the length of the CP and data block, respectively, Ts is the sample duration, and g(t) is rectangular pulse of support Ts. The time-invariant channel impulse response is give by:

\[h(\tau)=\sum_{p=1}^{N_p}h_p\delta(\tau-\tau_p)\]

where Np is the number of resolvable paths. The baseband received signal is then given by:

\[v(t)=\sum_{k=-Ng}^{N_d}d_k\sum_{p=1}^{N_p}h_pe^{-j2*pi f_c\tau_p}g(t-kT_s-\tau_p)+w(t)\]

where w(t) is AWGN process of zero mean and PSD N0. Sample the baseband received signal at t=qTs we have:

\[v_q=v(qT_s)=\sum_{k=-N_g}^{N_d}d_k\sum_{p=1}^{N_p}h_pe^{-j2*pi f_c\tau_p} g([q-k]T_s-\tau_p)+w_q\]

let:
\[f_{q-k}=\sum_{p=1}^{N_p}h_p e^{-j2*pi f_c\tau_p} g([q-k]T_s-\tau_p)\]

and Nf=ceil(max tau_p/Ts)+1, then the received samples can be written as:

\[v_q=\sum_{l=0}^{N_f-1}f_ld_{q-l}+w_q\]

I want a MATLAB code that goes through these steps literally. I know it is not necessary in this case, but I need it this way to apply it for another channel model. After the last equation, things go very much like in discrete-time models, so I didn't continue to the end.

Thanks in advance
 

Re: I need this in MATLAB

When you say you want to implement this is "in continuous time in MATLAB", do you mean that you want to heavily oversample so you can plot things that closely approximate the continuous waveforms? Matlab is on a computer, so things are going to end up discrete at some point.

Does the script R{x} in the first equation denote the real part of x? You don't say what dk is -- presumably this is complex, otherwise we can replace exp(jx) with a real sine. From the context, I presume CP denotes cyclic prefix? What is tau_p? Please point out any non-real quantities clearly, if necessary.

Other than w(t) and g(t), I don't really know what you have in mind for the other parameters. I could write something with dummy dk, h, fc, etc. if that would help.
 

Re: I need this in MATLAB

Yes, Re{} is the real part, but I am interested in baseband signaling, and I wrote the transmitted signal this way to show where exp(j2*pi*f_ctau_p) comes from after passing through the channel and downconvert the signal to baseband.

I am not sure, but for OFDM, for example I define t=-Tg:Ts:T where Tg is the guard interval, Ts is the sample interval, and T is the OFDM symbol interval, and then I write something like this in MATLab:

Code:
b=rand(1,N)>0.5;
d=2.*b-1;
x=ifft(d,K);%K is defined as 100*N for oversampling
x_CP=[x(end-CP+1) x];
x_sc=zeros(size(t));
for pp=1:Nb
            x_sc_int = interp1(t,x_CP,t-tau(pp),'linear');
            x_sc=x_sc+x_sc_int.*h(pp) .* exp(-1i*2*pi*fc*tau(pp))); 
 end

Assume dk are bipolar BPSK signals. Yes, CP is the cyclic prefix, and tau_p is the pth path delay in seconds.

You can use the following parameters:

Code:
fc=12*10^3;% Carrier Frequency
B=8000; %Bandwidth
Nd=512;%Number of data symbols
h=[1 1 1 1]; % Channel gains
tau=[0 7 16 20].*10^-3; %Channel delays

I am not sure how to deal with the (over)sampling in single carrier. Once Ts (the sampling time is set), the CP can be calculated from tau_Ts=round(tau/Ts) as CP=max(tau_Ts)+100 (+100 for insure long enough CP).

If you need more information please let me know.

Thanks
 

Status
Not open for further replies.

Similar threads

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top