# Effect of Adding the cyclic prefix on the toeplitz matrix in OFDM

Assuming we have $$N$$ symbols to transmit encoded in block $$k$$, Performing $$N$$−iFFT at the transmitter, we now have The resulted signal $$x(k)$$ has length of $$N$$. inserting a cyclic prefix $$CP$$ of size $$D$$, the length of signal will be $$N+D$$ instead of $$N$$.

Assuming we have channel $$h$$ of length $$L$$, the convolution of signal with channel can be written as:

$$y = h*x_{CP}(k)$$ = $$Hx_{CP}(k)$$ ,

where * is the convolution operation and $$H$$ is toeplitz matrix of size $$(N+D+L),(N+D)$$ built in matlab as below :

H = toeplitz([h(1) zeros(1,length(x_cp)-1) ], [h.' zeros(1,length(x_cp)-1) ]).';


As known, the signal $$y$$ has now the length of of $$D+N+L$$. However, the useful signal has the length of $$N$$ which is equivalent to $$s(k)$$

What I am asking about is the toeplitz matrix $$H$$ equivalent into $$y$$ after removing the delays $$L$$ and cyclic prefix $$D$$? In other words, If I can write the $$y$$ in matlab as y = y(D+1:end-L+1); whose length becomes $$N$$ now, how can I write $$H$$ equivalent into this part ?

What you mean might be circulant matrix instead of toeplitz matrix. See section 3.4.4 in https://web.stanford.edu/~dntse/Chapters_PDF/Fundamentals_Wireless_Communication_chapter3.pdf about how the circular convolution in OFDM is represented by matrix operations (eq 3.130 onwards).

First, in almost all standard OFDM systems, you can assume $$D \le L$$. The cyclic prefix will be less than or equal to maximum multi-path delay, so as long as $$D \le L$$, the linear convolution $$x * h$$ gets converted circular convolution of $$x$$ and $$h$$.

When $$y_c = H x_{cp}(k)$$, you only need to take $$N$$ original elements for $$x$$. $$H$$ is size $$N \times N$$. This is because you have already re-written the circular convolution in matrix form. Each row of $$H$$ will do dot-product with $$x$$ to generate $$y_c[n]$$. Like that there will be $$N$$ values of $$y_c$$ corresponding to each row of $$H$$.

$$y$$ is of length $$N+L +D-1$$. As you correctly mentioned $$y_c = y(D+1:D+N)$$.

Equivalent $$H$$ (size $$N \times N$$):

h(0) 0 0 ... h(L-1) h(L-2) .. h(1)

h(1) h(0) 0 0 ... h(L-1) h(L-2).. h(2)

h(2) h(1) h(0) 0 .. 0 0 h(L-1) h(L-2) .. h(3)

.

.

.

0 0 0 ... h(L-1) h(L-2) .. h(2) h(1) h(0)

MATLAB command to generate above $$H$$:

Assuming $$h$$ is the vector representing channel having $$L$$ non-zero values.

H = toeplitz([h zeros(1,N-L)][h(1) zeros(1,N-L) flip(h(2:L))])


For a small example where $$N=4, L=2, D=1$$

$$x = [x0, \,x1,\, x2,\, x3]$$

$$h = [h0\,,h1]$$

$$y = [x3h0\;, x3h1+x0h0\;, x0h1+x1h0\;, x1h1+x2h0\;, x2h1+x3h0\;, x3h1]$$

$$H$$

h0 0 0 h1

h1 h0 0 0

0 h1 h0 0

0 0 h1 h0

• Thank you for your feedback .. When I take the original signal $x$ whose length is $N$ which is equivalent to $y(D+1:D+N)$, how can I take the correspondent $N x N$ matrix of $H$ ? for example is it $H(D:D+N,D:D+N)$? Mar 17, 2020 at 10:38
• No it is H itself. As I mentioned in my answer, the way I wrote H is NxN. I will edit my answer to explicitly highlight it. Mar 17, 2020 at 11:20
• But $H$ itself is not $N x N$ , H should be be $(N+D x N)$. I mentioned in my question how we can can create $H$ using matlab. Is that what you mean by $H$ ? Mar 17, 2020 at 11:29
• Understood now. What you need is H=toeplitz([h0 h1 .. h(L-1) ] [h0 0...0 h(L-1) h(L-2)..h(1)]). I will edit my answer to add more details. Mar 17, 2020 at 12:11
• OK .. thank you so much. Yes .. that what I need .. Exactly Mar 17, 2020 at 13:40