深入浅出通信原理
很多原理一旦上升为理论,常常伴随着繁杂的数学推导,很简单的本质反而被一大堆公式淹没,通信原理因此让很多人望而却步。
非常复杂的公式背后很可能隐藏了简单的道理。
真正学好通信原理,关键是要透过公式看本质。
以复傅立叶系数为例,很多人都只是会套公式计算,真正理解其含义的人不多。对于经常出现的“负频率”,真正理解的人就更少了。
连载1:从多项式乘法说起
多项式乘法相信我们每个人都会做:
再合并同类项的方法得到的,要得到结果多项式中的某个系数,需要两步操作才行,有没有办法一步操作就可以得到一个系数呢?
下面的计算方法就可以做到:
这种计算方法总结起来就是:
反褶:一般多项式都是按x的降幂排列,这里将其中一个多项式的各项按x的升幂排列。 平移:将按x的升幂排列的多项式每次向右平移一个项。 相乘:垂直对齐的项分别相乘。 求和:相乘的各结果相加。
反褶、平移、相乘、求和-这就是通信原理中最常用的一个概念“卷积”的计算过程。
连载2:卷积的表达式
利用上面的计算方法,我们很容易得到: c(0)=a(0)b(0)
c(1)=a(0)b(1)+a(1)b(0)
c(2)=a(0)b(2)+a(1)b(1)+a(2)b(0)
c(3)=a(0)b(3)+a(1)b(2)+a(2)b(1)+a(3)b(0) 其中:a(3)=a(2)=b(3)=0 在上面的基础上推广一下:
假定两个多项式的系数分别为a(n),n=0~n1和b(n),n=0~n2,这两个多项式相乘所得的多项式系数为c(n),则: c(0)=a(0)b(0)
c(1)=a(0)b(1)+a(1)b(0)
c(2)=a(0)b(2)+a(1)b(1)+a(2)b(0)
c(3)=a(0)b(3)+a(1)b(2)+a(2)b(1)+a(3)b(0)
c(4)=a(0)b(4)+a(1)b(3)+a(2)b(2)+a(3)b(1)+a(4)b(0) 以此类推可以得到:
上面这个式子就是a(n)和b(n)的卷积表达式。
通常我们把a(n)和b(n)的卷积记为:a(n)*b(n),其中的*表示卷积运算符。
连载3:利用matlab计算卷积
表面上看,卷积的计算公式很复杂,计算过程也很麻烦(反褶,平移,相乘,求和),实际上使用Matlab很容易计算。
以上面的a(n) = [1 1],b(n) = [1 2 5]的卷积计算为例:
>> a = [1 1]; >> b = [1 2 5]; >> c = conv(a,b); >> c c =
1 3 7 5
后面很多地方的讲解都会用到matlab,没用过matlab的同学,请到网上下载个matlab 7.0,安装后,将上面前4行内容拷贝到命令窗口中执行,即可得到上面的执行结果。
为了更好地理解卷积(多项式相乘,相当于系数卷积),我们用matlab画一下高中学过的杨辉三角。 杨辉三角是一个由数字排列成的三角形数表,一般形式如下: 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 1 6 15 20 15 6 1
其中每一横行都表示(a+b)^n(此处
n=1,2,3,4,5,6,∙∙∙∙∙∙)展开式中的系数。
杨辉三角最本质的特征是,它的两条斜边都是由数字1组成的,而其余的数则是等于它肩上的两个数之和。 >> x=[1 1];y=[1 1]; >> y y = 1 1
>> y=conv(x,y) y = 1 2 1 >> y=conv(x,y) y = 1 3 3 1 >> y=conv(x,y) y =
1 4 6 4 1 >> y=conv(x,y) y =
1 5 10 10 5 1 >> y=conv(x,y) y =
1 6 15 20 15 6 1
连载4:将信号表示成多项式的形式
多项式乘法给了我们启发:如果信号可以分解为类似多项式的这种形式:
存不存在满足这个条件的x呢? 前人早就给出了答案,那就是:
附:前面推导过程中用到的几个三角公式:
连载5:著名的欧拉公式
这就是著名的欧拉公式。
对于欧拉公式,大家知道结论就可以了,想知道怎么得来的同学请参考下面的证明。
欧拉公式的证明(利用泰勒级数展开):
连载6:利用卷积计算两个信号的乘积
下面我们举个具体的例子来体会一下“如果信号可以分解为类似多项式的这种形式:
会涉及一系列的三角函数公式,计算过程非常麻烦。具体的计算过程这里就不列了,大家可以试一下,看看有多麻烦。
连载7:信号的傅立叶级数展开
上面这种把信号表示成形式类似于多项式的方法,本质上就是傅里叶级数展开,多项式中各项的系数实际就是傅里叶系数:
以频率为横轴,傅里叶系数为纵轴,画出的图就是频谱图。
前面我们已经知道:[ 3,17,28,12 ]=[1, 5, 6 ]*[ 3, 2 ] 因此很容易得出:时域相乘,相当于频域卷积。
连载8:时域信号相乘相当于频域卷积
连载9:用余弦信号合成方波信号
前面为了利用卷积,我们将信号表示成了多项式的形式,用多个复指数信号合成我们所需的信号。 为了更好地理解多个复指数信号合成所需信号,我们先来看一下用多个余弦信号合成方波信号的过程。
直流分量叠加一个cos(x)余弦分量:y=0.5+0.637.*cos(x);
再叠加一个cos(3x)余弦分量:y=0.5+0.637.*cos(x)-0.212.*cos(3*x);
再叠加一个cos(5x)余弦分量:y=0.5+0.637.*cos(x)-0.212.*cos(3*x)+0.127.*cos(5*x);
随着合成的余弦信号越来越多,波形越来越逼近一个方波,这从一个侧面验证了傅立叶级数展开的正确性:可以将方波分解成一个直流分量和无数个余弦波分量之和。
连载10:傅立叶级数展开的定义
引用 报告 回复 TOP
连载11:如何把信号展开成复指数信号之和?
前面我们已经把信号展开成了直流分量、余弦分量和正弦分量之和,可是如何把信号展开成复指数信号之和呢?
将上述公式代入前面的傅立叶级数展开式中,我们就可以得到一个很简洁的复指数形式的傅立叶展开式。建议大家动手推导推导,这样可以加深印象。
其中:
连载12:复傅立叶系数
连载13:实信号频谱的共轭对称性
连载14:复指数信号的物理意义-旋转向量
加上时间轴t,我们来看旋转向量的三维图:
注:x轴为实轴,y轴为虚轴 旋转向量在x-y平面的投影:
旋转向量在x-t平面的投影:
旋转向量在y-t平面的投影:
连载15:余弦信号的三维频谱图
连载16:正弦信号的三维频谱图
引用 报告 回复 TOP
连载17:两个旋转向量合成余弦信号的动画
附件动画演示的是:两个旋转方向相反的向量合成余弦信号。
这个动画是利用MATLAB制作并转成.avi文件的。方法没掌握好,动画的生成(转存为avi文件)花了不少于半小时的时间。请matlab高手指点一下。谢谢! 横轴是实轴,纵轴是虚轴。
连杆代表向量,连杆首尾相连代表向量相加,连杆的末端所经过的轨迹就是合成的信号。 初始位置的连杆代表的向量就是信号的复傅立叶系数。
连载18:周期信号的三维频谱图
连载19:复数乘法的几何意义
连载20:用成对的旋转向量合成实信号
注:图中蓝色的向量即代表复傅立叶系数,即t=0时刻旋转向量所在的位置。
注意两点:
1、由于初始相位关于实轴对称,旋转角速度相同,旋转方向相反,合并后的旋转向量只在实轴上有分量,在虚轴上没有分量。得到这样的结论是因为:我们分析的信号本身是实信号。 2、正负频率对应的复傅立叶系数合并,是向量相加,不是简单的幅度相加。
从前面的分析来看,虽然我们通过复傅立叶级数展开将实信号分解为了一系列的旋转向量之和(由此引出了复数,使得实信号的表达式中出现了复数),但由于逆时针和顺时针旋转的向量成对出现,而且成对出现的旋转向量的初始相位关于实轴对称,旋转的角速度相同,旋转方向相反,所以这些旋转向量合成的结果最终还是一个实信号(只在实轴上有分量,虚轴上的分量相互抵消掉了)。
连载21:利用李萨育图形认识复信号
通过前面的讲解,我们对实周期信号及其频谱有了一定的认识。 很多人会想到这个问题:如何理解复信号?
我们来回忆一下物理中学过的李萨育图形:当我们使用互相成谐波频率关系的两个信号分别作为X和Y偏转信号送入示波器时,这两个信号分别在X轴、Y轴方向同时作用于电子束而描绘出稳定的图形,这些稳定的图形就叫“李萨育图形”,如下图所示:
附:画出李萨育图形的matlab程序 for f=1 :5 ; t=0:0.001:1000; x= cos (2*pi*t); y= sin (2*pi*f*t) ; subplot(1,5,f) ;plot(x,y) ; axis off; end
连载22:实信号和复信号的波形对比
在下面两张图中:x轴(实轴)、y轴(虚轴)所在的平面是复平面,t轴(时间轴)垂直于复平面。 上图为实信号f(t)=cos(2πt)的波形图。 下图为复信号f(t)=cos(2πt)+jsin(2πt)的波形图。
对比这两张图,很容易得出:实信号在复平面上投影时只有实轴方向有分量,而复信号在复平面上投影时实轴和虚轴方向都有分量。
t=0:0.001:10; x=cos(2*pi*t);
subplot(2,1,1);plot3(x,t,0*t); set(gca,'YDir','reverse'); grid on;
x=cos(2*pi*t) ;
y=sin(2*pi*t) ; subplot(2,1,2);plot3(x,t,y); set(gca,'YDir','reverse'); grid on;
再看一个复信号,该信号在复平面上的投影就是前面介绍过的李萨育图形中的第2张图。
t=0:0.001:10; x=cos(2*pi*t) ; y=sin(4*pi*t) ; plot3(x,t,y);
set(gca,'YDir','reverse'); grid on;
连载23:利用欧拉公式理解虚数
用到复数的地方都会涉及到虚数“j”。数学中的虚数一般用“i”表示,而物理中一般用“j”表示,物理中之所以不用“i”表示虚数,主要是因为物理中经常用 “i”表示电流。
如果追溯起来,在高中的时候我们就学过虚数了。具体说来,我们第一次接触虚数应该是在解一元三次方程的时候。
连载24:IQ信号是不是复信号?
连载25:IQ解调原理
IQ解调原理如下图所示:
t=-1:0.001:1; f=1;
y=cos(2*pi*2*f*t); subplot(1,2,1);plot(t,y); y=sin(2*pi*2*f*t);
subplot(1,2,2);plot(t,y);
因篇幅问题不能全部显示,请点此查看更多更全内容