IQ数据表示信号(1)
为什么要用IQ数据?
要表示一个信号,最直观的方式是使用一系列信号振幅的采样序列,如下图:
缺点:
● 无法确定信号的频率是正频率或者负频率。例如 : cos(x) = cos(-x) 。在你对信号处理的时候,这将成为一个麻烦。将两个信号相乘时,它将导致乘法的结果可能有好几个:f1 ⊗ f2 等于 f1 + f2 也等于 f1 - f2。(负频率是什么?为什么会有负频率?)
●无法确定信号的功率(峰值振幅,包络)。只能在 0°, 180°, 360° 的时候看到峰值振幅,而且也不能确定后续的信号的功率是否也是一致。
I/Q 数据解决了这些问题。它不是只在时间维度上对信号一维采样,而是把它在三维空间中看成一个螺丝(螺旋,螺旋弹簧)。
现在,如果你从侧面看这条三维曲线,你将会得到和上面一样的一幅图片。也就是说,采样序列也就是这个螺旋在 2D 上的投影。而这就是 I/Q 数据的 "I" 部分。
如果你从上方看这条三维曲线,看起来和从侧面看十分相似,但是注意到,它是从 0 而不是从 90° 相位开始的。这是 I/Q 数据的 "Q" 部分。
沿时间轴从侧面看这条曲线,曲线是逆时针螺旋的。意味着这个信号的频率为正。而当曲线顺时针螺旋时,也可以得出信号频率为负的结论。也就是说在 I 信号一样、Q 信号不一样的时候,可能能表达相反的频率。半径就是信号的幅值。
I 轴和 Q 轴是互相垂直的,那么幅值也就等于 (I²+Q²)1/2 ,因此,在每个采样点都能看到信号的幅值。
I/Q 数据是什么?
正如你所理解的这样,I/Q数据采样就是沿着这个螺旋的时间轴方向对信号的采样坐标。
给定幅值 A 和 角度 ϕ 为任意值(只要信号是连续的)。 而A⋅cos(ϕ) 就是 I/Q信号中的I分量,即你的实信号。请注意,这只描述了你的信号中的一个点,或者说,一个采样值。在下一次采样时将会生成新的I/Q值,即另一个幅度和相位角,而这,反映了信号的调制。
I/Q 数据的一个例子
让我们取一个I/Q数据的,来看看如何表示的。这也叫做相位矢量(phase vector),或者相量(phasor)。
I = 0.69
Q = 0.40
画出复平面坐标图:
让我们来看看上面这幅图上数据点信息:
● 根据定义,瞬时幅值由信号的实部I给出,即 0.69
● 毕达哥拉斯定理告诉我们,余弦信号的幅值是:(0.69²+0.40²)1/2 = 0.8
● 三角函数告诉我们,目前相位角是在cosine函数的+30°
I/Q实际上假定了你的实信号(I)能表达为这个函数 I = A⋅cos(ϕ)
既然你能够自由选择A和ϕ,那么只要信号连续的话,上面表达式就绝对成立。
所以,使用IQ数据时,不仅仅能得到信号的瞬时值,而且可以得到一个生成函数。综上所述,我们可以得到:
实信号 I = 0.8⋅cos(30°)
I/Q数据是cosine函数的一种表达形式。而I/Q数据是我们上面使用的极坐标符号的矩形表示。这两者之间能互相转换,且不同的表达方式有不同的计算方式。选择矩形表示的I/Q数据是因为用硬件实现起来非常简单。
I/Q数据包括了I和Q两个独立的变量,它是一个长度为2的向量,或者说是一个复数I+Qi(I是实部)。
需要注意的是,上面所说的振幅是波峰值振幅,而非瞬时振幅。
● I是这个信号的瞬时振幅(即真正的信号)
● Q是信号相位偏移的瞬时幅值-90°
对于一个简单的函数,如正弦,相移代表着信号早于某一时刻产生,但是对于一个由不同分量的正弦函数叠加的信号,Q反映的是单个分量的90°位移,而不是复合信号。要将一个真正的信号转换成I/Q数据信号,需要进行傅立叶变换。
表示相同 I/Q 数据的不同方式
● 复数:I + Qi
● 作为向量 [I,Q]
● 或者只是两个普通变量 I 和 Q
极性形式
振幅和角度
I = 振幅⋅cos(角度) Q = 振幅⋅sin(角度)
振幅是余弦(和正弦)函数的峰值振幅,角度是从零到360°(或0到2π)的周期。
欧拉形式
由于 cos(φ) + i⋅sin(φ) = e^iφ,我们可以将 IQ 样本写为
Ae^iφ
这可能是最直观的样本表示形式。φ旋转角度,如极坐标表示所示,A 是振幅。意识到这一点,欧拉身份变得显而易见。因为 φ 是矢量在复平面中的旋转,所以将其旋转半圈,即 180° 或 π 弧度,导致实部为 -1,而没有虚部,因此:
eπi+1 = 0
可以找找欧拉公式的文章,关于欧拉公式,会是另外的一个故事。
这篇文章主要是从采样的角度来讲述IQ数据的,可能也会读的云里雾里,但是从这些文章中可以找到可以理解的部分,然后努力的去学习那些不理解的部分,可能回过头来就会相互印证,恍然大悟。在此做个记录。