1、相关概念
1、相关概念
基带。信息源,也称发射端,发出的没有经过调制(进行频谱搬移和变换)的原始电信号所固有的频带(频率带宽)。
频带。对基带信号调制后所占用的频率带宽。
带宽。一个信号所占有的从最低的频率到最高的频率之差。
频谱搬移。频谱搬移是指在发射端将调制信号从低频端搬移到高频端, 便于天线发送或实现不同信号源,不同系统的频分复用。
2、OFDM数学描述
在复基带上的在时间段上的OFDM信号x(t)可由下式描述:
[反正看不懂]
2.1
可将该复指数理解为[2]中提到的随着时间tt在复平面做螺旋线运动的波形(复频域),它可作为OFDM中的子载波(共Nc个),每个子载波的频率为kΔf(k为第k个子载波,为子载波的序号, Δf为各子载波的频率间隔)。因为它们具有正交性:
[从时域看]
从时域上看,该式子对应的是cos(j2πkΔft)(欧拉公式,毫无我个人理解的根据),周期为Tu,开始于时间0。
[从频域看]
时域的子载波相当于其在整个时域与一个周期为Tu、开始于0、幅值为1的矩形波相乘。时域乘法对应于频域卷积:整个时域上的余弦函数的频谱为一个冲激(如cos(t)的频率为),矩形窗的频谱为sinc函数(sinc(2π)),两者卷积可得每子载波频谱(度婆卷积,然后可用笔算得到:sinc函数频谱搬移到冲激处)。
为了看得清楚,不与时域的周期一致,将周期缩小一倍后的子载波频率图如下。
[请自动脑补傅里叶变换后得负频率 – 反正我还没脑补过来(唯有用螺旋线逆时针、顺时针旋转自圆其说)]
1.2
a(m)kak(m)代表PSK/QAM符号[参考OFDM符号ofdm_signal“1 映射”部分(挑对的看)]。
1.3 叠加
(子)载波:是一个特定频率的无线电波(某段频率内的波),是一种可用于传递(携带/表示)信息的波。
符号携带在第k个子载波上。
将所有复数信息携带后叠在一起形成OFDM符号。
[解析OFDM符号时,因为各个子载波的正交性,在OFDM符号上乘以一个,再在OFDM相应周期内积分就可得到第k个子载波上携带的信息。
1.4 总结
[1] 子载波:各子载波正交;各个子载波的频率相差1/Tu,Tu为OFDM符号的周期;各子载波的频谱有重叠,但因为子载波的正交性并不会使得子载波间有干扰,所以(载波频率重叠)比起频分复用,能够提高频带利用率。
[2] 子载波上的信息:子载波上的信息为PSK/QAM符号,是一个复数,它是源数据元素的一个映射。
3 OFDM符号的生成与解析
用以下简单的框图描述OFDM符号的生成与解析过程。(相应的经简易化的matlab仿真代码见附4)
3.1 generate data source
如生成以下数据:tx_data_source = [1 3 3 3 2 0 3 3]
3.2 generate PSK/QAM symbol
PSK/QAM符号是用来分别表示这些数据元素的一个复数。(参考链接的第一部分)
3.3 generate OFDM symbol
将序列作为ifft的输入就可得到一个子载波数量为Nc的OFDM符号。
除了可参考[1],[3]外(无自己的理解),还可以在matlab中做个小小的证明。当Nc=8Nc=8且以等间隔1/Tu取子载波的样点时,得到的结果跟ifft的变换矩阵(由conj(dftmax(8)求得)一样。这说明ifft首先会等间隔的频率差计算各个子载波的值,然后再将各个复数信号加载(乘)到相应的子载波上,最后求和得到OFDM符号。
3.4 get PSK/QAM symbol
从OFDM符号上提取各个子载波上携带的信息,即在OFDM符号上乘以一个再在该OFDM符号所在周期内作定积分就可以得到第k个子载波上的信息。这个过程由的fft变换统一完成。
3.5 get data source
原来的数据经过PSK/QAM映射成为了一个复数,这一步的工作就是根据PSK/QAM符号作映射的逆操作而得到相应的数据。
4 总结
[1] 依旧不懂傅里叶(逆)变换的计算过程。
[2] 一下子就接触OFDM,好陡。
参考
[1] 4G: LTE/LTE-Advanced for Mobile Broadband Second Edition – “CHAPTER 3 OFDM Transmission”
[2] 如果看了此文你还不懂傅里叶变换,那就过来掐死我吧【完整版】
[3] OFDM for Wireless Multimedia Communications - R. van Nee, R. Prasad - Artech House, 2000.pdf [2.2]
附[1] 绘制OFDM子载波在时域中的波形
-
% subcarrier_time_domain.m
-
% 绘制OFDM的Nc个子载波在时域上的波形
-
% 参考资料:
4G: LTE/LTE-Advanced
for Mobile Broadband Second Edition – \
-
% “CHAPTER
3 OFDM Transmission”,理解e^(j *
2 * pi (k / T)t )对应的时域部分
-
% 最后修改时间
2016.07.
30
-
clear
-
-
Tu =
2 * pi; % OFDM周期
-
st =
0.
0; % OFDM符号开始时间
-
sp =
0.
01; % 从OFDM的开始时间到结束时间的步长
-
ed = Tu + st; % OFDM符号的结束时间
-
-
t = st : sp : ed; %
x轴
-
-
fn =
0;
-
fn = fn +
1;
-
figure(fn);
-
plot(t,
cos(
0 * t), t,
cos(
1 * t), t,
cos(
2 * t), t,
cos(
3 * t)); % 子载波Nc =
4
-
grid on;
-
xlabel(
't');ylabel(
'A');
-
title([
'N_c = 4, T_u= ', num2str(Tu)]);
[2] 绘制OFDM子载波的频谱波形
-
% subcarrier_frequency_domain.m
-
% 绘制OFDM子载波的频谱
-
% 首先理解“频谱”的含义
-
% 然后理解OFDM子载波时域波形定长周期中的频谱:
-
% [
1] 余弦函数的频谱(率)为一个冲激,定周期的余弦函数相当于在时域乘以一个矩形窗
-
% [
2] 矩形窗的频谱为sinc函数(未用fft变换来求,而是直接写出了周期为
2pi或pi的矩形窗函数函数的频谱函数sinc(
2pi)和sinc(pi))
-
% [
3] 时域乘法相当于频域卷积
-
% 最后修改时间
2016.07.
31
-
-
clear
-
Tu = pi; %
2 * pi
-
fx =
3 * Tu; % 用来显示子载波频谱的频率轴的长度
-
sf =
0;
-
sp =
0.01; % 频率变化的步长
-
f = sf - fx /
2 : sp : fx /
2; % 自动脑补傅里叶变换后的负频率的出现(请教一个真正懂负频率出现的人)
-
z = zeros(
1, length(f));
-
-
fn =
0;
-
fn = fn +
1; % 当要绘制多图时方便计数
-
figure(fn);
-
% 周期为T的矩形窗的频谱函数为sinc(T * x)
-
plot(f, z,f, sinc(Tu * f +
0), f, sinc(Tu * (f -
1 / Tu)), f, sinc(Tu * (f -
2 / Tu)), f, sinc(Tu * (f -
3 / Tu))); %, f, sinc(Tu * (f +
3 / Tu)), f, sinc(Tu * (f +
2 / Tu)), f, sinc(Tu * (f +
1 / Tu)),
-
grid
on;
-
xlabel(
'f');ylabel(
'A');
-
title([
'N_s = 4, T_u= ', num2str(Tu)]);
[3] 子载波抽样值
-
% subcarrier_sample_value.m
-
% 参考资料:
4G: LTE/LTE-Advanced
for Mobile Broadband
Second Edition –
-
% “CHAPTER
3 OFDM Transmission”
-
% 等间隔计算各个子载波上的离散值
-
% 子载波数Nc =
8,
-
% 取样点Ns =
8,每隔
1取一个样点
-
% 最后修改时间:
2016.07
.30
-
clear
-
-
Nc =
8; % 子载波数目
-
Nt =
8; % OFDM周期,同时以
1为单位在子载波上取样点值
-
ts =
1; % 每个子载波开始的时间
-
myifftmtx = zeros(Nc, Nt);
-
for m =
1 : Nc % 第m个子载波
-
for t = ts : Nt % 在周期Nt上以
1为单位等间隔取样
-
myifftmtx(m, t) =
exp( (
1i *
2 * pi) * ((m -
1) / Nt) * (t - ts));
-
end
-
end
-
ifftmtx = conj(dftmtx(
8));
-
-
% isequal(ifftmtx, myifftmtx) %
-
% 验证子载波取样点是否与对应的ifft矩阵相同(用眼睛看,一一对照两个矩阵中的元素,两个矩阵是相等的;该函数将它们判断为不等,可能是计算精度或其它的原因^_^)
[4] OFDM符号的生成与解析
-
% ofdm_waveform_diagram.m
-
% @ 仿真ofdm_waveform_diagram_v0
.2.viso描述的基本框图
-
% @ 参考资料:[
1]
4G: LTE/LTE-Advanced
for Mobile Broadband
Second Edition –
-
% “CHAPTER
3 OFDM Transmission”(
3.3)
-
% [
2] OFDM
for Wireless Multimedia Communications - R. van Nee,
-
% R. Prasad - Artech House,
2000.pdf(
2.2)
-
%
-
% @ OFDM符号参数:
-
% 为OFDM符号分配的带宽 bw =
10MHz;
-
% 用于传递信息的子载波数量 Nuc =
600;
-
% 子载波间隔 Delta_f =
15KHz;
-
%
-
% @ 由OFDM符号参数的计算:
-
% OFDM符号所占带宽 Nuc * Delta_f =
600 *
15KHz =
9MHz
-
% OFDM符号采样频率:采样频率要等于甚至大于OFDM符号频率,以保证对OFDM符号采样的充分(理解采样频率为单位时间采集的数据量),
-
% FFT/IFFT点数 Nsp =
1024;如此OFDM的采样频率为Nsp * Delta_f =
15.36MHz
-
%
-
% @ 文档:ofdm_waveform_diagram_v0
.4.docx;(v0
.1 - v0
.4)
-
% @ 最后修改时间:
2017.07
.31
-
clear
-
-
% -------------------------------- OFDM参数描述 --------------------------------
-
Nuc =
600; % 用于传递数据的子载波数
-
Nsp =
1024; % 对OFDM符号的采样点,
-
%([
1] 大于等于子载波数量;[
2] 最好为
2^m,方便fft/ifft运算)
-
% -------------------------------- OFDM参数描述 --------------------------------
-
-
-
% -------------------------------- 发送端 --------------------------------
-
% &&&&&&&& generate data source &&&&&&&&
-
nb =
2; % nb-比特数
-
n = Nuc; % nb-比特数的个数
-
tx_data_source = generate_data_source( nb, n );
-
-
% &&&&&&&& generate PSK/QAM symbol &&&&&&&&
-
mod_type =
'psk'; % 映射源数据元素的方式
-
tx_PSKorQAM_symbol = generate_PSKorQAM_symbol( mod_type, tx_data_source, nb );
-
-
% &&&&&&&& generate OFDM symbol(IFFT) &&&&&&&&
-
Nifft = Nsp;
-
tx_PSKorQAM_symbol_oversample = ...
-
[tx_PSKorQAM_symbol(
1 : Nuc /
2),...
-
zeros(
1, Nsp - Nuc), ...
-
tx_PSKorQAM_symbol(Nuc /
2 +
1 :
end)]; % 过采样,为何将
0加在中间,见[
2]
-
tx_ofdm_symbol = ifft(tx_PSKorQAM_symbol_oversample, Nifft); % 将每个数据加载到每个子载波上
-
% -------------------------------- 发送端 --------------------------------
-
-
-
% -------------------------------- 信道 --------------------------------
-
% &&&&&&&& Fading channel &&&&&&&&
-
rx_ofdm_symbol = tx_ofdm_symbol; % 理想信道
-
% -------------------------------- 信道 --------------------------------
-
-
-
% -------------------------------- 接收端 --------------------------------
-
% &&&&&&&&
get PSK/QAM symbol(FFT) &&&&&&&&
-
Nfft = Nsp;
-
rx_PSKorQAM_symbol_oversample = fft(rx_ofdm_symbol, Nfft);
-
-
% &&&&&&&&
get data source &&&&&&&&
-
rx_PSKorQAM_symbol = ...
-
[rx_PSKorQAM_symbol_oversample(
1 : Nuc /
2),...
-
rx_PSKorQAM_symbol_oversample(
end - Nuc /
2 +
1 :
end)]; % 去掉过采样数据
-
rx_data_source = demodulate_PSKorQAM_symbol( rx_PSKorQAM_symbol, mod_type, nb );
-
% -------------------------------- 接收端 --------------------------------
-
-
% 判断OFDM符号的解析是否成功
-
isequal(tx_data_source, rx_data_source)
---------------------
作者:最容易害羞
来源:CSDN
原文:https://blog.csdn.net/misskissC/article/details/52082662
版权声明:本文为博主原创文章,转载请附上博文链接!