学习笔记——OFDM仿真课设

说明

本学期的通信原理课程设计,要做一个OFDM调制解调的仿真,现在基本上理解了OFDM调制的过程,并且参照实验平台上的代码,自己仿写了个简化突出的代码,因此,梳理一下思路,写个小小总结,方便后面写课设报告之用,也希望能方便其他OFDM初学者。

本文简要介绍OFDM原理和优势,并利用数学公示推导,着重讨论IFFT相关内容,参考《移动通信 第五版》(其实也有很多地方没看懂或者觉得有错,这里写的仅是我的理解内容)。

本人也是OFDM初学者,可能有些地方理解不到位或者错误,希望各位老哥在线交流~

1.OFDM简介

OFDM全称正交频分复用,是一种高级的频分复用的调制技术。相对于传统FDM,它的频谱利用率更高,抗干扰能力更强。其基本思路是:

将串行数据并行,将并行的数据分别调制到各自的载波上去,且这些载波是正交的,然后合成各个已调的载波信号成为已调信号;在接收端,收到已调信号后,分别乘以对应的载波信号后积分,由于正交性,只有与自己相乘后积分才不为零,可以分别解调出对应的数据。

两大明显优势:

  1. 正交载波 ,由于载波正交,因此即便是载波间有重叠,也能还原出各载波信号。
    在这里插入图片描述
图1 FDM&OFDM
  1. 串行数据并行化,串行数据传输过程中,一个比特数据错误,可能导致很大的前后误差,而并行数据传输就不一样了。
    在这里插入图片描述
图2 OFDM原理框图

2.OFDM原理

串行原始数据,单个码元长度 t s t_{s} ts,将串行数据分组,一组N(载波数)个, T s = N ∗ t s T_{s}=N*t_{s} Ts=Nts,N个子载波: f n = f 0 + n ∗ Δ f , n = 0 , 1 , 2 , … N − 1 f_{n}=f_{0}+n*\Delta f,n=0,1,2,…N-1 fn=f0+nΔf,n=0,1,2,N1;
载波间隔取 Δ f = 1 / T s = 1 / ( N ∗ t s ) \Delta f = 1/T_{s}=1/(N*t_{s}) Δf=1/Ts=1/(Nts); d ( n ) d(n) d(n)即并行的一组的N个数据,用以给N个载波进行调制;

由上图OFDM原理框图可知:

OFDM实际发射的信号:

D ( t ) = ∑ n = 0 N − 1 d ( n ) ∗ c o s ( 2 π f n t ) (1.1) D(t)=\sum_{n=0}^{N-1}d(n)*cos(2\pi f_{n}t)\tag{1.1} D(t)=n=0N1d(n)cos(2πfnt)(1.1)

在接收端也是接收信号 D ( t ) D(t) D(t),乘以对应的频率后积分有:

d ′ ( k ) = ∫ 0 T s D ( t ) ∗ 2 c o s ( w k t ) d t = ∫ 0 T s ∑ n = 0 N − 1 d ( n ) 2 c o s ( w k t ) 2 d t = d ( k ) d^{'}(k)=\int_{0}^{T_{s}}D(t)*2cos(w_{k}t)dt=\int_{0}^{T_{s}}\sum_{n=0}^{N-1}d(n)2cos(w_{k}t)^{2}dt=d(k) d(k)=0TsD(t)2cos(wkt)dt=0Tsn=0N1d(n)2cos(wkt)2dt=d(k)
补充:正交性:如果 f ( t ) 与 g ( t ) 正 交 f(t)与g(t)正交 f(t)g(t)
∫ f ( t ) ∗ g ( t ) d t = 0 \int f(t)*g(t) dt=0 f(t)g(t)dt=0

因此通过正交性能够恢复出原始信号。
实现OFDM一般在产生叠加的已调信号的时候有两种方法:
(1)叠加法 (2)IDFT 法。

2.1叠加法

很简单,就是单纯的将各个载波调制的信号加起来,也就是式子(1-1)所表达内容,这里就不赘述了。

2.2IDFT

一般为了更加高效的调制,通常会进行一些数字调制、多进制调制,如QPSK、16QAM等,通过幅度和相位进行保存数据信息来进行调制。

D ( t ) = ∑ n = 0 N − 1 A ( n ) ∗ c o s ( 2 π f n t + ϕ n ) = ∑ n = 0 N − 1 A ( n ) c o s ( ϕ n ) c o s ( 2 π f n t ) − A ( n ) s i n ( ϕ n ) s i n ( 2 π f n t ) = ∑ n = 0 N − 1 a ( n ) c o s ( 2 π f n t ) − b ( n ) s i n ( 2 π f n t ) D(t)=\sum_{n=0}^{N-1}A(n)*cos(2\pi f_{n}t+\phi_{n}) \\ =\sum_{n=0}^{N-1}A(n)cos(\phi_{n})cos(2\pi f_{n}t)-A(n)sin(\phi_{n})sin(2\pi f_{n}t)\\ =\sum_{n=0}^{N-1}a(n)cos(2\pi f_{n}t)-b(n)sin(2\pi f_{n}t) D(t)=n=0N1A(n)cos(2πfnt+ϕn)=n=0N1A(n)cos(ϕn)cos(2πfnt)A(n)sin(ϕn)sin(2πfnt)=n=0N1a(n)cos(2πfnt)b(n)sin(2πfnt)
写成复数形式如下:
D ( t ) = R e [ ∑ n = 0 N − 1 ( a ( n ) + j b ( n ) ) ∗ e j 2 π f n t ] (1.2) D(t)=Re[ \sum_{n=0}^{N-1}(a(n)+jb(n))*e^{j2\pi f_{n}t}] \tag{1.2} D(t)=Re[n=0N1(a(n)+jb(n))ej2πfnt](1.2)
根据数字调制里面的知识,原始序列 d ( n ) d(n) d(n)经过映射成为 a ( n ) + j b ( n ) a(n)+jb(n) a(n)+jb(n),也就是星座图里面的实轴、虚轴值。在这里插入图片描述

图3 a,b分别对应I,Q轴的值

由于 d ( n ) 映 射 成 a ( n ) + j b ( n ) d(n)映射成a(n)+jb(n) d(n)a(n)+jb(n),故而式子(1.2)可写成下面形式:
D ( t ) = R e [ ∑ n = 0 N − 1 d ( n ) ∗ e j 2 π f n t ] (1.3) D(t)=Re[ \sum_{n=0}^{N-1}d(n)*e^{j2\pi f_{n}t}] \tag{1.3} D(t)=Re[n=0N1d(n)ej2πfnt](1.3)
f n = f 0 + Δ f f_{n}=f_{0}+\Delta f fn=f0+Δf带入上式有:
D ( t ) = R e [ ∑ n = 0 N − 1 d ( n ) ∗ e j 2 π f 0 t ∗ e j 2 π n Δ f t ] D(t)=Re[ \sum_{n=0}^{N-1}d(n)*e^{j2\pi f_{0}t}*e^{j2\pi n\Delta ft}]\\ D(t)=Re[n=0N1d(n)ej2πf0tej2πnΔft]
如果对 D ( t ) D(t) D(t)以采样频率 F s Fs Fs进行采样得到离散序列:
D ( m ) = R e [ ∑ n = 0 N − 1 d ( n ) ∗ e j 2 π f 0 m / F s ∗ e j 2 π n Δ f m / F s ] (1.4) D(m)=Re[ \sum_{n=0}^{N-1}d(n)*e^{j2\pi f_{0}m/Fs}*e^{j2\pi n\Delta fm/Fs}] \tag{1.4} D(m)=Re[n=0N1d(n)ej2πf0m/Fsej2πnΔfm/Fs](1.4)
Δ f / F s = 1 / N , 即 F s = N Δ f = N ∗ 1 / T s = N ∗ 1 / ( N ∗ t s ) = 1 / t s \Delta f/Fs=1/N ,\\即Fs =N\Delta f=N*1/T_{s}=N*1/(N*t_{s})=1/t_{s} Δf/Fs=1/N,Fs=NΔf=N1/Ts=N1/(Nts)=1/ts,则(1.4)可写为:
D ( m ) = R e [ ∑ n = 0 N − 1 d ( n ) ∗ e j 2 π f 0 m / F s ∗ e j 2 π n m / N ] = R e [ ∑ n = 0 N − 1 I D F T ( d ( n ) ) ∗ e j 2 π f 0 m / F s ] = R e [ ∑ n = 0 N − 1 I D F T ( d ( n ) ) ] ( 若 f 0 = 0 ) (1.5) D(m)=Re[ \sum_{n=0}^{N-1}d(n)*e^{j2\pi f_{0}m/Fs}*e^{j2\pi nm/N}] \tag{1.5}\\=Re[ \sum_{n=0}^{N-1}IDFT(d(n))*e^{j2 \pi f_{0}m/Fs}]\\=Re[ \sum_{n=0}^{N-1}IDFT(d(n))] (若f_{0}=0) D(m)=Re[n=0N1d(n)ej2πf0m/Fsej2πnm/N]=Re[n=0N1IDFT(d(n))ej2πf0m/Fs]=Re[n=0N1IDFT(d(n))](f0=0)(1.5)

IDFT定义为: x ( n ) = ∑ k = 0 N − 1 X ( k ) e j 2 π n k / N = I D F T ( X ( k ) ) x(n)=\sum_{k=0}^{N-1}X(k)e^{j2\pi nk/N}=IDFT(X(k)) x(n)=k=0N1X(k)ej2πnk/N=IDFT(X(k))

因此,可用并行序列的数字调制映射的IDFT得到叠加后的时域信号的采样的离散信号。当采样频率足够高,满足奈奎斯特速率,即可无失真,不损失频率分量,可见IDFT的可行高效。

3.OFDM仿真结果

进行MATLAB仿真,可得如下结果:
在这里插入图片描述

图4 四个载波时域图

在这里插入图片描述

图5 载波频谱(16QAM)

在这里插入图片描述

图6 两种方法的合成信号对比

4.Problem

1.为什么IDFT法得到的合成波形和叠加法的波形差别比较大?
答:IDFT得到的波形是连续信号的采样,可用通过对叠加法以同样频率采样得到信号在与IDFT的信号比较,不出意外,应该是相同的。

我也是刚刚写博客才想到这个问题的可能答案,还没来得及写代码验证,稍后有时间我会写代码看看。

2.前面分析IDFT里面采样频率 F s = N Δ f Fs=N\Delta f Fs=NΔf而合成信号最大频率是 f m a x = f 0 + N Δ f f_{max}=f_{0}+N\Delta f fmax=f0+NΔf,并不满足 F s > 2 f m a x F_{s}>2f_{max} Fs>2fmax,何解?

  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
OFDM(正交频分复用)是一种广泛应用于现代通信系统中的调制技术,可以提高频谱利用率和抗干扰能力。以下是使用MATLAB进行OFDM仿真的简单步骤: 1.生成OFDM信号 首先,我们需要生成一个OFDM信号。可以使用MATLAB内置的OFDM调制器来生成一个OFDM信号。以下是一个示例代码: ```matlab N = 64; % 子载波数 cp_len = 16; % 循环前缀长度 data_len = N - cp_len; % 数据长度 num_ofdm_symbols = 100; % OFDM符号数 % 生成随机数据 data = randi([0 1], data_len * num_ofdm_symbols, 1); % 将数据转换为OFDM符号 ofdm_data = reshape(data, data_len, num_ofdm_symbols).'; ofdm_symbols = ifft(ofdm_data, N, 2); ofdm_symbols = [ofdm_symbols(:, (N-cp_len+1):end) ofdm_symbols]; ``` 2.添加噪声 接下来,在OFDM信号中添加噪声。可以使用AWGN信道模型来模拟加性高斯白噪声(AWGN)通道。以下是一个示例代码: ```matlab snr_db = 10; % 信噪比(dB) snr = 10^(snr_db/10); % 信噪比 noise_var = 1/snr; % 噪声方差 % 生成噪声 noise = sqrt(noise_var/2)*(randn(size(ofdm_symbols)) + 1i*randn(size(ofdm_symbols))); % 添加噪声 ofdm_symbols_noisy = ofdm_symbols + noise; ``` 3.提取OFDM符号 接下来,我们需要从添加了噪声的OFDM信号中提取符号。可以使用FFT函数来提取符号。以下是一个示例代码: ```matlab ofdm_data_noisy = ofdm_symbols_noisy(:, (cp_len+1):(cp_len+data_len)); ofdm_data_fft = fft(ofdm_data_noisy, N, 2); data_noisy = reshape(ofdm_data_fft.', [], 1); ``` 这样就可以利用MATLAB进行OFDM仿真了。您可以根据具体的应用场景,修改OFDM信号的参数和添加噪声的方式。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值