IQ数据表示信号(1)

IQ数据表示信号(1)

引用的公众号文章,链接:https://mp.weixin.qq.com/s?__biz=MzI1NTIzMTk0Ng==&mid=2247486643&idx=1&sn=3c1079c4b45647f940abda243b57f1bd&chksm=ea385e16dd4fd7002375f5e684ff881ee0d35dd5de81edaab3c844acd325bee4b0e9ee66a91c&scene=21#wechat_redirect

为什么要用IQ数据?

要表示一个信号,最直观的方式是使用一系列信号振幅的采样序列,如下图:

图片

缺点:

● 无法确定信号的频率是正频率或者负频率。例如 : cos(x) = cos(-x) 。在你对信号处理的时候,这将成为一个麻烦。将两个信号相乘时,它将导致乘法的结果可能有好几个:f1 ⊗ f2 等于 f1 + f2 也等于 f1 - f2。(负频率是什么?为什么会有负频率?)

●无法确定信号的功率(峰值振幅,包络)。只能在 0°, 180°, 360° 的时候看到峰值振幅,而且也不能确定后续的信号的功率是否也是一致。

I/Q 数据解决了这些问题。它不是只在时间维度上对信号一维采样,而是把它在三维空间中看成一个螺丝

SDR设备通常将采集到的信号IQ形式提供给用户,得到一连串IQ样本点,代表信号某段时间各等间隔采样时刻下的瞬时IQ值,单个IQ样本点表示某瞬时时刻下信号IQ瞬时值 [^1]。对于SDR信号采集的IQ数据处理,在雷达信号处理领域有较为详细的方法和技术,以下展开介绍: - **IQ信号分离技术**:IQ信号由同相(In - phase)和正交(Quadrature)两部分组成,两通道信号以90度相位采样,通过正交通道处理可获取信号幅度和相位信息。实现该技术核心是确保两通道同步性并消除硬件误差,具体方法有同步采集,保证两个通道采集时间严格一致;误差校正,利用已知参考信号或算法校正增益不均衡和相位误差 [^2]。 - **分离后数据的进一步处理技巧**: - **滤波去噪**:应用滤波器去除不必要噪声,如使用低通、高通、带通滤波器。 - **包络检测**:将IQ信号转换为包络,提取信号的强度信息。 - **谱分析**:执行快速傅里叶变换(FFT)分析信号的频率内容 [^2]。 以下是使用MATLAB进行低通滤波处理的代码示例: ```matlab % 假设iq_data为从readDCA1000.m获取的IQ数据 % 设计一个低通滤波器 lpFilt = designfilt('lowpassfir', 'PassbandFrequency', 0.4, 'StopbandFrequency', 0.5, ... 'PassbandRipple', 1, 'StopbandAttenuation', 60, 'SampleRate', fs); % 应用滤波器 filtered_iq_data = filter(lpFilt, iq_data); ``` 此外,对于不同设备采集的IQ数据,在读取时也有相应的方法。如HackRF采集的IQ数据,Python和MATLAB打开数据文件的代码示例如下: ```python import numpy as np import matplotlib as mpl import matplotlib.pyplot as plt fileName=("4M_5743_recive_0.5_11_29.iq") arr = np.fromfile(fileName, dtype=np.int8)#按8位数据读取iq数据 real = arr[126500:128000:2]#取部分i数据 imag = arr[126501:128000:2]#取部分q数据 d_real = real.astype(np.float32)#数据类型转化,不然8位数据只能显示-127到127 d_imag = imag.astype(np.float32) comx = d_real + d_imag * 1j#组成复数 plt.plot(real)#绘制实部数据 plt.show() ``` ```matlab clc; clear; fs = 4e6; filename = '4M_5743_recive_aa_03.iq'; fid = fopen(filename, 'r'); [data] = fread(fid,inf,'int8');%hackrf 是8位采样 fclose(fid); I = data(1: 2: end);%IQ交替采样得到data,要剥离得到I和Q Q = data(2: 2: end); z = I + j * Q;%生成复信号,计算角频率(相位),就能解调了 plot(Q); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值