作者:桂。

时间:2017年12月19日20:43:04

链接:http://www.cnblogs.com/xingshansi/p/8067839.html


前言

主要记录基本的频分复用原理,以及仿真实现。

一、频分复用原理

频分复用FDM:

通常x1..4(t)可以是同一个序列的串并转化,也可以是不同序列,频分复用示意图:

主要包含三个操作:1)上采样(up-sample); 2)滤波(fir);3)累加(sum)。

频分复用:将多个不同频段的信号拼接为一个宽带信号,主要包含三个操作:1)上采样(up-sample); 2)滤波(fir);3)累加(sum)。

  • 上采样

T1/T2 = 4,故上采样倍数为4,上采样有原数据保持、插值、补零等方法,这里采用最基本的补零方法。不失一般性,X0(n)、X1(n)、X2(n)、X3(n)分别按不同频率的正弦信号处理。

以x1(n) 的频域变换:

4倍插值后的频谱:

可以看出插值后出现了多个重复周期,因此需要借助低通滤波以保留单一周期,如下图所示:

因此需要构造不同频段的滤波器,四个蓝色阴影部分拼接(累加)即可。

  • 滤波器

这里prototype滤波器:

共构造8个滤波器,分成四组,输出y(n)为:

Y(n) = y0(n)+ y1(n)+ y2(n)+ y3(n)

ym(n):

Ym(n) = xm_interpl(n)*[ha (n) exp((-im*2*pi*(m*n))/8)+ ha(n) exp((-im*2*pi*((8-m)*n))/8)]

= 2*xm_interpl(n)*[ha(n)cos((-2*pi*(m*n))/8)]

其中ha (n) = h(n)* exp((-im*pi*n)/8)为prototype filter,至此便完成了信号的频分多路复用(FDM)理论推导.

  • 累加

滤波后的各个输出累加,即得到调制的y(n),仿真图如图所示:

结果与上文一致。

二、仿真结果

频分复用的接收端是发射的逆过程,分别利用 基本滤波器、多相滤波器实现:

基本滤波器:

%recovery signal: x
clc;clear all;close all;
load fir2.mat;
fir = fir2;
B = 4000;%4KHz
fs1 = 2*B;
D = 4;
t1 = 0:1/fs1:(128-1)/fs1;
f = [800 1600 2200 2800];%frequency
x0 = sin(2*pi*t1*f(1));
x1 = sin(2*pi*t1*f(2));
x2 = sin(2*pi*t1*f(3));
x3 = sin(2*pi*t1*f(4));
x_shape = [x0;x1;x2;x3];
%% interp
x0_interp = [x0;zeros(3,length(t1))];
x0_interp = x0_interp(:)';
x1_interp = [x1;zeros(3,length(t1))];
x1_interp = x1_interp(:)';
x2_interp = [x2;zeros(3,length(t1))];
x2_interp = x2_interp(:)';
x3_interp = [x3;zeros(3,length(t1))];
x3_interp = x3_interp(:)';
%%prototype filter
x_all = [x0_interp;x1_interp;x2_interp;x3_interp;flipud([x0_interp;x1_interp;x2_interp;x3_interp])];
im = sqrt(-1);
iseq = 1:length(fir);
for j = 1:D
h_channel(j,:) = fir.*cos((2*pi*((j-1/2)*(iseq-1)))/8);
% h_channel(j,:) = fir.*exp((1j*2*pi*((j-1/2)*(iseq-1)))/8);
end
%%add signal
yn = zeros(1,length(x3_interp));
for i = 1:D
yn = filter(h_channel(i,:),1,x_all(i,:))+yn;
end
%%demultiplex
x_channel = zeros(D,length(yn)/D);
for i = 1:D
x_channel(i,:) = downsample(filter(h_channel(i,:),1,yn),D);
end
figure()
for i = 1:D
subplot(2,2,i)
plot(linspace(0,fs1,length(t1)),abs(fft(x_channel(i,:))));
xlabel('frequency(Hz)');ylabel('amplitude');title('direct filter -> x');
end %%plot mse
figure()
for i = 1:4
x_channel(i,:) = x_channel(i,:)/max(abs( x_channel(i,:)));
subplot (2,2,i)
plot(linspace(0,fs1,length(t1)),x_channel(i,:));hold on;
plot(linspace(0,fs1,length(t1)),x_shape(i,:),'r--');hold on;
% plot(linspace(0,fs1,length(t1)),abs(x_shape(i,:)-x_channel(i,:)).^2,'k');
xlabel('frequency(Hz)');title('MSE');
% legend('recovery','orignal','MSE');
end

  多相滤波器,推导:

令l = iD+p,D表示分解后信号路数,此处D = 4:

再将结果取实部即可得解。

%recovery signal by polyphase filter: x
clc;clear all;close all;
load fir2.mat;
fir = fir2;
B = 4000;%4KHz
fs1 = 2*B;
D = 4;
t1 = 0:1/fs1:(128-1)/fs1;
f = [800 1600 2200 2800];%frequency
x0 = sin(2*pi*t1*f(1));
x1 = sin(2*pi*t1*f(2));
x2 = sin(2*pi*t1*f(3));
x3 = sin(2*pi*t1*f(4));
x_shape = [x0;x1;x2;x3];
%% interp
x0_interp = [x0;zeros(3,length(t1))];
x0_interp = x0_interp(:)';
x1_interp = [x1;zeros(3,length(t1))];
x1_interp = x1_interp(:)';
x2_interp = [x2;zeros(3,length(t1))];
x2_interp = x2_interp(:)';
x3_interp = [x3;zeros(3,length(t1))];
x3_interp = x3_interp(:)';
%%prototype filter
x_all = [x0_interp;x1_interp;x2_interp;x3_interp;flipud([x0_interp;x1_interp;x2_interp;x3_interp])];
im = sqrt(-1);
iseq = 1:length(fir);
for j = 1:D
h_channel(j,:) = fir.*cos((-2*pi*((j-1/2)*(iseq-1)))/8);
% h_channel(j,:) = fir.*exp((1j*2*pi*((j-1/2)*(iseq-1)))/8);
end
%%add signal
yn = zeros(1,length(x3_interp));
for i = 1:D
yn = filter(h_channel(i,:),1,x_all(i,:))+yn;
end
%%demultiplex
%prototype filter
h0 = fir.*exp((-1j*2*pi*((-1/2)*(iseq-1)))/8);
h_py = fliplr(reshape(h0,D,length(h0)/D));
y_py = (reshape(yn,D,length(yn)/D));
x_channel = zeros(D,length(yn)/D);
for i = 1:D
x_channel(i,:) = filter(h_py(i,:),1,y_py(i,:));
end
x_channel = real(ifft(x_channel));
x_channel = x_channel([1,4,2,3],:);
%%plot mse
figure()
for i = 1:4
x_channel(i,:) = x_channel(i,:)/max(abs( x_channel(i,:)));
subplot (2,2,i)
plot(linspace(0,fs1,length(t1)),x_channel(i,:));hold on;
plot(linspace(0,fs1,length(t1)),x_shape(i,:),'r--');hold on;
% plot(linspace(0,fs1,length(t1)),abs(x_shape(i,:)-x_channel(i,:)).^2,'k');
xlabel('frequency(Hz)');title('MSE');
% legend('recovery','orignal','MSE');
end

三、其他

原型滤波器信道化思路:

信道化与频分复用略有不同,频分复用主要是余弦函数,理论上相邻无衰减,得到的余弦曲线并不理想:

当有一定的过渡带时,余弦曲线:

可见此时应该有一个过渡带才更加合理,而不是像信道化体系常用的约束:相邻信道无缝连接。

最新文章

  1. css学习归纳总结(三) 转
  2. [leetcode]Path Sum II
  3. mysql之路【第三篇】
  4. 【概念笔记】 EL表达式
  5. JAVA NIO概述(一):I/O模型
  6. 多层神经网络与C++实现
  7. webdriver(python)学习笔记五——层级定位
  8. 跨平台的zip文件压缩处理,支持压缩解压文件夹
  9. lua curl动态链接库编译安装(二)
  10. OpenGL ES 2.0 变换
  11. 单极型ADC如何测量负电压?
  12. 如何使用OLAMI自然语言理解开放平台API制作自己的智能对话助手小程序
  13. xml代码 解决eclipse乱码问题
  14. 51Nod 博弈模板题
  15. hdfoo站点开发笔记
  16. 如何使用Hanlp加载大字典
  17. python之模块datetime详解
  18. 微信accesstoken回调
  19. 命令行下 初识 redis 入门教程
  20. Retrieving ST-Link/V2 Firmware from Update Utility

热门文章

  1. gcc-链接库顺序
  2. 【Java多线程】线程同步方法概览
  3. POJ 3268 Bookshelf 2 动态规划法题解
  4. java 自增和自减运算符
  5. maven正确的集成命令-U-B
  6. 转:体积阴影(Shadow Volumes)生成算法
  7. Region使用全解
  8. quartz持久化部署实现
  9. ios中地图
  10. stuff in /proc/sys/fs/