[https://blog.csdn.net/qq_45732223/article/details/109165359](https://blog.csdn.net/qq_45732223/article/details/109165359)
一、实信号与复信号的基本概念
1、实信号:物理可实现的信号常常是时间 t(或 k)的实函数(或序列),其在各时刻的函数(或序列)值为实数,这样的信号称为实信号。
2、复信号:函数(或序列)值为复数的信号称为复信号,最常用的是复指数信号。
复指数信号的重要特性之一是它对时间的导数和积分仍然是复指数信号。
连续信号的复指数信号可表示为
离散时间的复指数序列可表示为
3、如何理解复信号?
一个复信号 f(t)=Re[f(t)]+jIm[f(t)]可以看做是一个实信号 Re[f(t)]与一个虚信号 jIm[f(t)]的合成,由于任何只含有时间 t 为自变量的信号都可以视为一条二维曲线,则两个分别以时间为唯一自变量的信号 Re[f(t)]与 jIm[f(t)]的叠加可以看成是一条随着时间延伸的三维曲线。
-
复指数信号分析
当 Re[f(t)]为一个余弦信号,Im[f(t)]为一个正弦信号时,他们的合成即为一条标准的螺旋线。MATLAB 绘制复指数函数 y=e^(jwn)的三维图像
为了绘制直观的复指数图像,可以连同它在实轴、虚轴上的投影一起绘制。这样一个大任务就分解为 6 个步骤:
S1-绘制复指数图像的离散点; S2-绘制每个离散点到旋转轴x轴的垂直连线; S3-绘制复指数图像在实轴z上的投影,这也是离散点; S4-绘制实轴投影离散点到旋转轴x轴的垂直连线; S5-绘制复指数图像在虚轴y上的投影,这也是离散点; S6-绘制虚轴投影离散点到旋转轴x轴的垂直连线。
代码
clear all;
close all;
clc;
w=1;
n=0:0.1:20;
f=exp(1j*w*n);
L=length(n);
x=n; %以该复函数自变量n作为三维图像的x轴
y=imag(f); %以该复函数虚部作为三维图像的y轴
z=real(f); %以该复函数实部作为三维图像的z轴
y_0=zeros(size(n)); %获取y=0的点集
y_1=ones(size(n)); %获取y=1的点集
z_0=zeros(size(n)); %获取z=0的点集
z_1=ones(size(n)); %获取z=1的点集
%S1-用蓝点绘制复指数函数图像的离散点;
plot3(x,y,z,'.b');
%添加坐标轴名称及标题名称
xlabel('自变量n');
ylabel('虚部');
zlabel('实部');
title('复指数函数图像');
hold on %启动图形保持功能,当前坐标轴和图形都将保持而不被刷新,此后绘制的图形都将添加在这个图像的基础上,多图共存,并自动调整坐标轴的范围
grid on %显示坐标轴网格线
x1=[x;x];
y1=[y;y_0];
z1=[z;z_0];
%S2-用蓝色实线绘制每个离散点到旋转轴x轴的垂直连线;
for i=1:L
plot3(x1(:,i),y1(:,i),z1(:,i),'b');
end
% 绘制复指数函数图像所绕的轴
plot3(x,y_0,z_0,'k');
%S3-用黄点绘制复指数图像在实轴z上的投影,这也是离散点;
plot3(x,y,-1*z_1,'.y');
%S4-用黄色实线绘制实轴投影离散点到旋转轴x轴的垂直连线;
y2=[y;y_0];
z2=[-1*z_1;-1*z_1];
for i=1:L
plot3(x1(:,i),y2(:,i),z2(:,i),'y');
end
%S5-用紫点绘制复指数图像在虚轴y上的投影,这也是离散点;
plot3(x,y_1,z,'.m');
%S6-用紫色实线绘制虚轴投影离散点到旋转轴x轴的垂直连线。
y3=[y_1;y_1];
z3=[z;z_0];
for i=1:L
plot3(x1(:,i),y3(:,i),z3(:,i),'m');
end
结果
当 w=1,n=0:0.1:20 时,从原点往自变量 n 的正方向看去,图像逆时针旋转。
当 w=-1,n=0:0.1:20 时,从原点往自变量 n 的正方向看去,图像顺时针旋转。
当 w=0.5,n=0:0.1:20 时,图像旋转速度变慢。
- 由此我们可以看出,复指数函数 y=e^(jwn)在空间中是一个螺旋前进的三维图像,它前进的方向是自变量序列 n 增大的方向,w 确定了旋转的方向与速度。
- w 为正值时,图形逆时针旋转;反之,w 为负值时,图形顺时针旋转。这就解释了负频率的物理意义:正频率代表向量逆时针旋转,负频率代表向量顺时针旋转。
- 通过观察 w=1 与 w=-1 时复指数信号图像在实轴和虚轴的投影也可以看出,其实轴投影相同,虚轴投影相反,这显然也是符合数学定义的。
- 复信号的幅值与相位
假如用垂直于时间轴的横截面去切一个复信号,该平面将于这个复信号相交于唯一一点;同时,该平面与时间轴也会有唯一交点;这两个交点之间的距离就是该信号的幅值。
时间轴切面除了与时间轴相交于一点外,还分别与实平面和虚平面相交于一条直线,这两条直线的交点恰好是时间轴切面与时间轴的交点;因此,时间轴切面上信号点在实轴、虚轴二维坐标系上的与原点连线与坐标轴的夹角就是该时刻上信号的相位。 - 瞬时角频率
瞬时角频率是相位函数的倒数。
我们可以这样理解瞬时角频率:每一个时刻的时间切面都可以得到一个与复信号对应二维曲线的交点,当把这些切面叠放到一起时,这些交点就成为一条曲线。当我们用微小的离散时隙来近似连续的情况时,曲线上相邻任意两点与坐标中心的连线将构成一个夹角,而该夹角的大小就是瞬时角频率,也就是相位的变化率。
二、为什么要引入复信号?
实际信号不存在复信号,只存在实信号,那为什么要提出复信号的概念?
我们首先来看一下实信号的频谱:
研究时间信号 f(t) 与其频谱 F(jw) 之间的虚实、奇偶关系。如果 f(t) 是时间 t 的实函数,那么
式中频谱函数的实部和虚部分别为
频谱函数的模和相角分别为
故若 f(t) 是时间 t 的实函数,则频谱函数 F(jw) 的实部 R(w) 是角频率 w 的偶函数,虚部 X(w) 是角频率的奇函数;
进而可知,|F(jw)| 是 w 的偶函数,而 φ(w) 是 w 的奇函数;
此外,由下式可知,其频谱具有共轭对称性,f(t)的幅度频谱为偶对称,相位频谱为奇对称
分析:实信号具有共轭对称的频谱,从信息的角度来看,其负频谱部分是冗余的,因此为了信号处理方便,去掉频域的负半平面,只保留正频谱部分的信号,其频谱不存在共轭对称性,这样产生的频谱所对应的时域信号就是一个复信号,这个复信号称为解析信号或预包络。
两点补充:
- 负频率只有数学上的意义,并不实际占用带宽,但是基带信号调制到高频之后,形成了关于 Wc 的对称频谱,原来的负频率信号就占用了实实在在的频率资源。
- 如果一个实信号的单边频带宽 w,考虑到负频率频谱,实际占的频谱区域就是 ±w,所以通信中传输这样的信号就需要占用 2w 的频带宽度。
为了去掉负频率但保持总功率不变,我们利用阶跃信号 u(w)对实信号 x(t)的频谱 X(jw)进行处理:
根据卷积定理及傅里叶变换的性质可得傅里叶反变换(*表示卷积运算)
由此引出了希尔伯特变换
三、希尔伯特变换(Hilbert transform)
- 数学定义:在数学与信号处理的领域中,一个实值函数的希尔伯特变换是将信号 x(t)与 h(t)=1/(πt)做卷积,以得到其希尔伯特变换。因此,希尔伯特变换结果可以理解为输入是 x(t)的线性时不变系统(linear time invariant system)的输出响应,而此系统的脉冲响应为 h(t)=1/(πt)。
因此,一个实值函数 x(t)的希尔伯特变换记作 H[x(t)]
反变换为
- 实质:h(t)的傅里叶变换为
从频谱上来看,希尔伯特变换将我们的原始信号的正频率部分乘以 -j,负频率部分乘以 j。即保持幅度不变的条件下,将正频率移相-90°,而对于负频率成分移相 90°。
下图是对原始信号做 1 到 4 次 Hilbert 变换的频谱示意图,较为直观的表示了希尔伯特变换:
- Hilbert 变换性质:
(1)2 次 Hilbert 变换后,原信号相位翻转了 180°,即信号两次 Hilbert 变换后是其自身相反数。
(2)Hilbert 变换四次后就变回本身了。
(3)Hilbert 变换本质上是卷积,若 y=conv(v,x),那么 Hilbert(y)=conv(Hilbert(v),x)=conv(v,Hilbert(x))。
(4)x(t)和 Hilbert[x(t)]的能量以及平均功率相等,相关函数和功率谱密度相同。(希尔伯特变换只改变相位,不改变幅度)
(5)x(t)和 Hilbert[x(t)]奇偶性相反,即若原函数 x(t)是 t 的偶(奇)函数,则其希尔伯特变换 Hilbert[x(t)]就是 t 的奇(偶)函数。
(6)x(t)和 Hilbert[x(t)]是正交的,即
(7)卷积 H 变换
(8)Hilbert 变换抑制了直流分量 H(0)=0
(9)实信号 Hilbert 变换后的信号依然是实信号,Hilbert 变换是一个线性变换.
MATLAB 分析 cos 函数的希尔伯特变换
代码
close all;
clear all;
clc;
% Hilbert transform testing
ts = 0.001; %时间间隔
fs = 1/ts; %采样率
N = 200; %采样个数
f = 50; %频率,小于采样率的一半(奈奎斯特)
k = 0:N-1;
t = k*ts; %时间向量
% signal transform
% 结论:cos信号Hilbert变换后为sin信号
y = cos(2*pi*f*t);
yh = hilbert(y); % matlab函数得到的信号是解析信号
yi = imag(yh); % 虚部为书上定义的Hilbert变换
subplot(2,3,1);
plot(t,y);
title('原始cos信号');
subplot(2,3,2);
plot(t,yi);
title('Hilbert变换后的信号');
% 检验两次Hilbert变换的结果(理论上为原信号的负值)
% 结论:两次Hilbert变换的结果为原信号的负值
yih = hilbert(yi);
yii = imag(yih);
subplot(2,3,3);
plot(t,yii);
title('两次Hilbert变换后的信号');
set(gca,'YLim',[-1,1]); %设置Y轴的数据显示范围
set(gca,'YTick',[-1:0.5:1]); %设置Y轴刻度
% 谱分析
% 结论:Hilbert变换后构建的解析信号的谱为单边谱
NFFT = 2^nextpow2(N); %由于FFT算法的本质,对于NFFT的选择一般为大于序列长度点数N的最小的2的幂次方,这样能够改善FFT的计算性能
f = fs*linspace(0,1,NFFT); %从0到fs共输出NFFT个数,则步长为fs/NFFT
Y = fft(y, NFFT)/N; %Y=fft(X,n)函数返回n点DFT
YH = fft(yh, NFFT)/N;
%figure
subplot(2,3,4);
plot(f,abs(Y));
title('原信号的幅度谱');
xlabel('频率f (Hz)');
ylabel('|Y(f)|');
subplot(2,3,5);
plot(f,abs(YH));
title('解析信号的幅度谱');
xlabel('频率f (Hz)');
ylabel('|YH(f)|');
结果
- 物理意义:
4.1 解析信号
4.1.1 本质:
把信号的正频率频谱移相-90°,把负频率频谱移相 90°,然后再将这个信号移相 90° 与原信号相加,使两者的负频率频谱互相抵消,正频率频谱加倍,构成一个没有负频率频谱的复信号。这个复信号的带宽就只占 w 了,用这个方法,使频带节约了一半。
4.1.2 特点:
4.1.2.1 解析信号的实部和虚部功率谱相同,自相关函数相同,其互相关函数是一个奇函数;
4.1.2.2 解析信号的频谱只有正频段且幅度值为原来的 2 倍,实现了信号由双边谱转换为单边谱;功率谱也只有正频段,强度为原来的 4 倍;
4.1.3 意义:
将实信号变换为解析信号就是将一个二维信号变成了三维复平面上的信号,复平面向量的模和相角代表了信号的幅度和相位。
解析信号可以计算包络(瞬时振幅)和瞬时相位
4.1.3.1 包络
4.1.3.2 瞬时相位就是虚部和实部在某一时间点的比值的 arctan
4.1.3.3 瞬时频率是瞬时相位对时间的导数
4.1.3.4 一个信号既有幅度信息,又有相位信息,所以可设
4.2 欧拉公式(Euler’s formula)
公式表明,复指数信号可以表示为一个实信号和一个虚信号的和的形式,且实部和虚部相差 π/2
观察 sin 和 cos 的傅里叶变换,可以得出,sinx 的 Hilbert 变换是 cosx,cosx 的 Hilbert 变换是-sinx.也就是说,sinx 与 cosx 是一对希尔伯特变换对.
那么,欧拉公式实际上就是一种特殊的 Hilbert 变换。
复指数信号,时域上是复数,但其频谱就是一个脉冲,只有正频率部分,且幅度值是原来的 2 倍。
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于