频分复用(Frequency Division Multiplexer)

作者:桂。

时间: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:Dh_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:Dyn = filter(h_channel(i,:),1,x_all(i,:))+yn;
end
%%demultiplex
x_channel = zeros(D,length(yn)/D);
for i = 1:Dx_channel(i,:) = downsample(filter(h_channel(i,:),1,yn),D);
end
figure()
for i = 1:Dsubplot(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:4x_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:Dh_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:Dyn = 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:Dx_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:4x_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

三、其他

 原型滤波器信道化思路:

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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/242650.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MATLAB系统辨识

MATLAB系统辨识 最终效果:自动调出PID三项对应的参数,控制效果很不错。 目的:通过matlab,辨识出系统的传递函数,找到最理想的PID参数。 优点:1.节省“盲调PID”的时间。2.在辨识出传递函数后,…

AR模型与数据平稳性之间的关系

作者:桂。 时间:2017-12-19 21:39:08 链接:http://www.cnblogs.com/xingshansi/p/8068021.html 前言 前几天碰到一个序列分析的问题,涉及到自回归(auto-regression, AR)等模型,但如何确定序列…

电脑卡顿怎么办?

电脑卡顿怎么办? 电脑主要由CPU,内存,硬盘,显卡,声卡,主板,显示器各种连接线等组成。 CPU:中文名字叫中央处理器,是电脑的大脑,各种数据的处理运算控制。有…

自控原理之系统辨识

自控原理之系统辨识 前沿 数学模型是一个或多或少,以一定的形式表达出你正在观测的事物。**通过观测事物的各项属性,推断出一个数学模型,这是科学。**系统辨识,着手从观测事物得到的数据中,建立一个数学模型。正由于物…

马云狂炸近百亿,你的借呗额度涨了吗?

蚂蚁借呗非常受大家欢迎,因为简单方便,所以很多缺钱的朋友都会通过借呗去借钱。但是借呗的额度主要以小额为主,很多时候满足不了日常的资金需求,因此很多朋友都在想各种方法去提高借呗的额度。但是借呗的额度不是想提高就可以提高…

贷款中介市场要变天了吗?

贷款中介一直是贷款市场一股很重要的力量,他们对各个贷款机构的渗透率很高,贷款中介也确实帮助了很多想贷款的客户,同时也减轻了贷款机构的一些业务压力,甚至有些银行等贷款机构直接把贷款业务外包给了第三方中介结构。可以说贷款…

将数据导入到MATLAB

将数据导入到MATLAB 将数据导入到MATLAB中有二种方式。 第一种:直接使用MATLAB读Excel文件 例如 Excel表格 numxlsread(data1.xlsx,Sheet1,A1:E13);%读入Excel文件 input_trainnum(1:8,1:4);%1到8行,1到4列 output_trainnum(1:8,5);%1到8行&#xff0…

重磅!四部委发文,以后买房可以省几十万元!

去买房,能用公积金贷款的绝不考虑商业贷款,能用商业贷款的绝对不会全款买房。但对于开发商来说,事实却恰好相反,网上就流行了一个段子:买房全款的往里走;按揭的不要堵门口;公积金贷款的把共享单…

函数的分文件编写

函数的分文件编写 三步实现函数的分文件编写 创建.h后缀名的头文件创建.cpp的后缀名的源文件在头文件中写函数的声明在源文件中写函数的定义

网上代开微粒贷,行得通吗?

微粒贷估计大家有想拥有,但腾讯偏偏要跟大家较真,实行白名单邀请制,只给那么几千万人微粒贷,绝大部分人连个微粒贷的图标都没有。因此很多人都在想着各种办法去开通微粒贷,有优化条件的,有开通腾讯信用的&a…

C++的指针

C的指针 指针变量的定义和使用 指针的作用:可以通过指针间接访问内存。 内存编号是从0开始记录的,一般用十六进制数字表示。可以利用指针变量保存地址。 指针就是一个地址。指针变量就是用来存放地址的。 可以通过p去使用它,也可以去访问它…

支付宝2017年个人账单明天发布,你小心脏准备好了吗?

今天上午,支付宝公布了 2017 年全民账单,数据显示,随着移动支付的普及,中国人的生活方式正悄然巨变,不带钱包出门已成为中国人的新习惯,并成为世界的新时尚。根据全民账单数据显示,在2017年&…

支付宝个人账单出来了,这里有最全的查看攻略!

今天是2018年1月3日,支付宝个人年度账单如期而至。账单页面那怎么查看个人账单呢?第一步、打开支付宝,点击【我的】然后选择【账单】打开第二步、点击账单页头的banner第三步、滑动动画查看个人账单

C++的结构体

C的结构体 结构体属于用户自定义的数据类型,允许用户存储不同的数据类型。 结构体定义和使用 注意:在创建结构体变量的时候,关键字struct可以省略,但是在定义结构体时,不能省略关键字struct。 结构体数组 作用&a…

整顿满月,如今现金贷生不如死

去年现金贷平台野蛮生长,现金贷业务高歌猛进,各种现金贷平台如雨后春笋般出现,但是由于准入门槛低,相关监管政策缺位等原因,现金贷业务也带来了很大的社会影响,最典型的是高息放款,不当催收&…

2018年去贷款,是否可以不用找信贷经理帮忙?

去贷款或许你可能说,市场上贷款机构那么多,贷款产品那么多,为何要找信贷经理?随便去一家贷款机构申请不就行了。但是有一个专业的信贷经理帮你办理跟没有专业的信贷经理指导,贷款真的有很大的区别,甚至专业…

Glitch Free时钟切换技术

Glitch Free时钟切换技术 两个时钟切换电路。Glitch Free为无毛刺切换电路。 第一种时两个时钟源的频率呈倍数关系,第二种是两个时钟源完全没有关系,异步时钟。 下面是使用AND-OR型多路复用器逻辑进行简单的时钟切换。 下图针对的是两个时钟源频率成倍数关系。在每个时钟…

稀疏傅里叶变换(sparse FFT)

作者:桂。 时间:2018-01-06 14:00:25 链接:http://www.cnblogs.com/xingshansi/p/8214122.html 前言 对于数字接收来讲,射频域随着带宽的增加,AD、微波、FPGA资源的需求越来越高,但频域开的越宽并不意味着…

截图小妙招

截图小妙招 第一步:先右键,建立一个文本 第二步:修改名称和后缀(截图.bat) 第三步:右击 选择编辑,输入start snippingtool 保存。 第四步:双击,选择模式下的矩形就可…

马云最怕的事还是来了,央行对借呗动真格!

借呗已经推出深受大欢迎,截止2017年3月,借呗已经向1200万用户借款,累计放款3000亿,估计到了2017年底,借呗的放款额度很有可能超过5000亿元。借呗火爆,马云也是赚的盘满钵满,数据显示&#xff0c…