作者:桂。

时间: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

三、其他

原型滤波器信道化思路:

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

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

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

频分复用(Frequency Division Multiplexer)的更多相关文章

  1. Introduction to Computer Networks(网络架构与七层参考模式)

    Network Connectivity 1. Important terminologies 1) Link 设备连接的连线.Link本身既可以是有线的,也可以是无线的. 2) Node 设备.电脑 ...

  2. GSM、3G、LTE、4G

    3GPP(The 3rd Generation Partnership Project)3GPP的目标是实现由2G网络到3G网络的平滑过渡,保证未来技术的后向兼容性,支持轻松建网及系统间的漫游和兼容性 ...

  3. 无线wifi

    802.11n 802.11n是基于OFDM(正交频分复用Orthogonal Frequency Division Multiplexing)技术下的2.4G频段的协议,也可以工作在5G频段下. - ...

  4. [转】LTE整体架构和协议架构概述

    1.1 LTE整体架构 LTE(Long Term Evolution,长期演进)是由3GPP(The 3rd Generation Partnership Project,第三代合作伙伴计划)组织制 ...

  5. OFDM、FTTx、SCTP、Ad Hoc、WSN术语简介

    上课提到一些术语,下来查了一下,总结在这里. OFDM: OFDM(Orthogonal Frequency Division Multiplexing)即正交频分复用技术,实际上OFDM是MCM(M ...

  6. 哈工大计算机网络Week0-概述

    目录 L01什么是计算机网络 计算机网络 Internet L02什么是网络协议? 定义 内容 三要素 L03计算机网络结构 网络边缘 接入网络 数字用户线路DSL 电缆网络 无线接入网络 网络核心( ...

  7. 配置和验证AP功率

    1.针对自主AP(Autonomous AP) 使用'power local'配置命令配置AP或Bridge Radio功率级别.在2.4 GHz,802.11g Radio上,您可以设置正交频分复用 ...

  8. 计算机网络 Computer Networks​ 期末复习总提纲

    平时不学习,期末火葬场. 一周时间靠王道考研和各路 pdf 自学计网,留下的提纲都在这里了.全是干货.全文 pdf 可以在这里下载:http://cloud.billc.io/s/xNHarppQPG ...

  9. 转载:WIFI无线协议802.11a/b/g/n/ac的演变以及区别

    WIFI无线协议802.11a/b/g/n/ac的演变以及区别 版权声明:版权所有,转载须注明出处. https://blog.csdn.net/Brouce__Lee/article/details ...

随机推荐

  1. Stingray验证机制

    Filter 系统中的验证使用的是Filter库来完成,利用Filter配置几个属性和参数就实现了表单验证,简化了工作.基本原理很简单,在onload之后按照属性查找元素,然后绑定相应的change/ ...

  2. Android使用OKHttp库实现视频文件的上传到服务器

    目录 1 服务器接口简介 2 Android端代码实现 2.1 xml布局文件 2.2 Activity类 2.3 Okhttp网络通信类 1 服务器接口简介 此处我使用的服务器接口是使用Flask编 ...

  3. java笔记整理

    Java 笔记整理 包含内容     Unix Java 基础, 数据库(Oracle jdbc Hibernate pl/sql), web, JSP, Struts, Ajax Spring, E ...

  4. kube-proxy源代码分析

    摘要:假设你对kube-proxy的工作原理有一定的了解.本文基于kubernetes v1.5代码对kube-proxy的源代码文件夹结构进行了分析,并以iptables mode为例进行了完整流程 ...

  5. SWF运行时判断两个DisplayObject是否同个类型,属于flash professional库中的同一个元件

    一般我们判断两个实例对象是否同样的类型,可以用typeof得到对象类型,然后用==号比较. typeof适用于原生类型. 而对于自定义类型,虽然typeof得到的都是Object,但还有更强的招数:g ...

  6. java HMAC_SHA1加密算法

      java HMAC_SHA1加密算法 CreationTime--2018年7月14日16点46分 Author:Marydon 1.准备工作 import javax.crypto.Mac; i ...

  7. C++高性能转换大小写算法

    简述 有一个需求,是需要将URL中的query参数的key全部转换为小写或者大写,键值对的数量有点多,但全部都是英文字母,无需考虑非字母的情况. 实现比较快的做法是使用STL或C标准库中的转换接口,如 ...

  8. java第四节 类的继承/抽象/接口/多态性

    /* 类的继承 类的继承可以简化类的定义 java只支持单继承,不允许多重继承 可以有多层继承,即一个类可以继承其一个类的子类,如类B继承了类A,类C又可以继承类B 那么类C也间接继承了类A 子类继承 ...

  9. springboot自定义jdbc操作库+基于注解切点AOP

    发布时间:2018-11-08   技术:springboot+aop   概述 springBoot集成了自定义的jdbc操作类及AOP,因为spring自带的JdbcTemplate在实际项目中并 ...

  10. ELK 实现 Java 分布式系统日志分析架构

    日志是分析线上问题的重要手段,通常我们会把日志输出到控制台或者本地文件中,排查问题时通过根据关键字搜索本地日志,但越来越多的公司,项目开发中采用分布式的架构,日志会记录到多个服务器或者文件中,分析问题 ...