进动目标微多普勒仿真:散射点建模与MATLAB实现

发布时间:2026/9/14 14:34:51

进动目标微多普勒仿真:散射点建模与MATLAB实现 简介在雷达信号处理中多普勒效应描述运动目标的频率偏移而微多普勒效应可揭示目标自身旋转、振动等微小动态特征对于区分旋转部件与静止结构等场景具有重要价值。这份MATLAB程序聚焦动目标散射点的进动仿真基于点散射模型模拟时序回波生成随时间变化的微多普勒频谱便于直观展示进动引起的频移规律。压缩包内仅含1个m脚本大小1KB代码精炼适合信号处理学习者或雷达工程人员快速理解仿真逻辑并进行二次开发。程序通过设定目标速度、角度、进动速率等关键参数在仿真中先计算基础多普勒频移再根据进动动态更新散射点位置最终输出动态频谱可用于模拟直升机旋翼、卫星天线等进动目标的回波特性为雷达目标识别、跟踪及性能评估提供有力参考。目前该资源已有269人学习下载是教学演示与科研验证的实用工具。1. 微多普勒仿真的起点进动目标的“第二频谱”从哪里来当一幅距离-多普勒图里主峰两侧多出若干条平行谱线时第一直觉是接收机带外干扰或电磁环境噪音。但把视线角换一个方向再观察谱线位置会随之移动——这是目标在自旋与锥旋共同作用下表面散射点不断改变径向速度造成的微多普勒调制。这个标题要解决的问题一句话概括把“进动”从姿态描述落到“目标散射点上每个脉冲时刻的位置和相位”再算出对应的多普勒谱。它涉及三个环节散射点布位、进动旋转建模、慢时间谱分析正好对应一个可运行的仿真工程。做雷达目标识别的算法组用这组代码可以快速回答“进动角改变 1° 频谱哪里变”雷达总体工程师也能用它校核 MTD 动目标检测的检测窗口与 PRF 设计。2. 目标散射点模型与进动微多普勒的理论边界2.1 从进动运动到瞬时微多普勒频率的推导散射点回波的复基带形式可以写成s(t) A·exp( j·2π·(2·(R0 r(t)·n_rad)/λ) )其中 R0 是目标质心到雷达的初始参考距离r(t) 是散射点在雷达坐标系中的位置向量n_rad 是视线方向单位向量λ 是载波波长。由于 λ 在厘米量级r(t) 在视线方向变化一个波长相位就走完一个整周期。对相位时间求导得到瞬时多普勒频率f_d(t) (2/λ)·[ v_t·n_rad d(r(t))/dt · n_rad ]第一项来自目标质心平动对应距离门整体搬移第二项来自目标自身转动引起的散射点径向速度这就是微多普勒。进动是自旋与锥旋的复合目标先绕自身对称轴以 ω_s 自旋同时该对称轴再绕空间某个固定轴以 ω_c 锥旋进动角 θ_p 保持不变。整个过程写成旋转矩阵R_total(t) R_cone(ω_c·t) · R_spin(ω_s·t)散射点在每个脉冲时刻的位置就是 R_total(t)·r0其中 r0 是零时刻的初始坐标。将这个式子代入 f_d(t)展开后能看到两条谱线族一条间隔取决于 ω_s另一条间隔取决于 ω_c两条谱线族在频谱上卷积叠加。实际目标上不同散射点距离旋转轴的距离不同投影长度不同所以最终谱线不是单根正弦调频而是多条正弦曲线的非相干叠加。这解释了为什么实测圆锥目标的微多普勒谱看上去像“梳子”而不是教科书里单一点目标那张干净的正弦曲线图。推导中要注意一个容易忽略的耦合项当自旋轴与锥旋轴不共点时R_cone 和 R_spin 的导数之间存在交叉乘积项。这个交叉项不改变边带间隔但会改变各阶边带的幅度比例。忽略它仿真出来的谱线位置正确但幅度比例失真后续基于边带幅度做目标尺寸估计时会系统性偏大。这也是为什么许多入门代码能画出“形状差不多”的微多普勒谱却始终无法和外场数据对齐的常见原因。2.2 散射点布局的选型从单强点到面元网格布局方式典型点数适用目标形态微多普勒谱特点计算代价单强点1球体、角反射器单条正弦调频曲线最低稀疏刚体点阵10~100锥体、圆柱、简单卫星多条正弦曲线叠加边带呈梳状中稠密面元网格1000 以上带太阳能帆板、天线等复杂目标连续谱包络边带展宽高进动仿真一般用稀疏刚体点阵就够。需要明确一个认识散射点不是几何网格顶点而是 RCS 统计意义上的强反射中心。对锥形目标常规布法是“锥顶 1 个强点 底面边缘 6~8 个绕射点 侧面若干分布点”每个点的反射系数按面积投影占比赋初值。目标表面一个 0.1 波长的台阶或凹槽在毫米波段就可能成为一个新的强散射点所以代码里点位表要单独留接口方便后续替换实测模型导出的点云。2.3 进动参数的坐标约定与自检清单进动仿真最常见的错误是把旋转顺序写反。物理上自旋是目标绕自身对称轴的转动锥旋是自身对称轴绕空间参考轴的转动每一时刻的姿态永远先自旋再锥旋所以代码里要写成 R_cone·R_spin·r0。如果顺序反了散射点先被锥旋带到一侧再自旋相当于进动轴被自旋拖着走频谱边带间隔不变但边带幅度比例全部改变。项目后期如果要把进动轴改成任意空间方向绕轴旋转矩阵请用 Rodrigues 公式构造不要用 roll-pitch-yaw 欧拉角小进动角范围内欧拉角反解会出现奇异。2.3.1 进动角、角速度与视线方向的量纲校验在写主仿真之前先用一行断言把 PRF 是否覆盖微多普勒扩展查清楚% 参数自检微多普勒频移上限应小于 PRF/3 f_md_max 2 * (w_c w_s) * max(sqrt(sum(r0.^2,1))) * sin(th_p) / lam; assert(f_md_max prf/3, PRF不足f_md_max%.1f Hz, 当前prf%.0f Hz, f_md_max, prf);这段自检的逻辑是把自旋和锥旋角速度相加乘最大散射点臂长再乘进动角正弦得到一个保守的微多普勒频移上限。实际调制幅度还取决于散射点相对自旋轴的投影距离所以这个上限不会超出物理范围。PRF 要留到 3 倍余量而不是 2 倍是因为 MTD 处理窗和非相干积累还会展宽主瓣和边带刚好卡在奈奎斯特边界上会让边带混叠进主瓣。进动角超过 20° 时边带展宽会明显超过多普勒滤波器组单通道带宽这种情况要考虑重新设计 PRF超过 30° 时目标运动状态接近翻滚圆锥进动假设本身不再成立。3. 用 MATLAB 跑通进动散射点回波生成与参数取舍3.1 最小脚本散射点坐标生成与自旋-锥旋复合转动拿到 Doppler_3.zip 这类按迭代版本归档的工程包时先别急着跑主函数。工程内三个文件要认全场景参数脚本、散射点模型函数、频谱绘图函数。真正的参数不藏在主函数里而是散落在三个文件的边界处。散射点坐标生成属于第二类文件的核心下面这段脚本可以独立运行输出每个散射点在每个脉冲时刻的三维坐标% md_precession.m —— 进动目标散射点轨迹生成 fc 10e9; c0 3e8; lam c0/fc; prf 1000; np 256; % 脉冲数 t (0:np-1)/prf; w_s 2*pi*0.6; % 自旋角速度 rad/s w_c 2*pi*1.2; % 锥旋角速度 rad/s th_p 6*pi/180; % 进动角 6° n_rad [0.3, -0.7, 1]; n_rad n_rad/norm(n_rad); % 视线方向单位向量 % 散射点锥顶1 底面边缘6 侧面4共11点 r0 zeros(3,11); r0(:,1) [0; 0; 0.45]; % 锥顶强散射点 for k 1:6 ang 2*pi*(k-1)/6; r0(:,k1) [0.12*cos(ang); 0.12*sin(ang); -0.25]; end for k 1:4 r0(:,k7) [0.08*cos(pi/2*(k-1)); 0.08*sin(pi/2*(k-1)); 0.1]; end rp zeros(3,11,np); for n 1:np Rspin [cos(w_s*t(n)) -sin(w_s*t(n)) 0; sin(w_s*t(n)) cos(w_s*t(n)) 0; 0 0 1]; Rcone [cos(w_c*t(n)) 0 sin(w_c*t(n)); 0 1 0; -sin(w_c*t(n)) 0 cos(w_c*t(n))]; % 关键先自旋后锥旋锥旋矩阵左乘 rp(:,:,n) Rcone * Rspin * r0; end代码里的 w_c、w_s 都用 rad/s不要混用 Hz否则第 2.3.1 节的断言公式会整体失真。np 的选择取决于微多普勒频率分辨率 Δf PRF/np本配置下 Δf ≈ 3.9 Hz足够分辨 1.2 Hz 锥旋频率的整数倍边带。散射点布局中锥顶强点的反射系数应明显大于其余点侧面点位置不需要精确落在锥面几何上散射点模型关心的是它们到旋转轴的投影距离和径向视角相位中心近似即可。3.2 视线投影与瞬时多普勒解算数值差分 vs 解析速度计算散射点瞬时多普勒有两条路。数值差分用 (rp(:,k,n) - rp(:,k,n-1))/PRI 近似速度简单但会引入舍入噪声当脉冲重复间隔很小时谱线毛刺明显。更稳妥的是解析速度旋转矩阵对时间求导。令 A(t) R_cone(t)·R_spin(t)则 A(t) R_cone·R_spin R_cone·R_spin。绕固定轴旋转矩阵的导数等于角速度矩阵左乘原矩阵于是可以写成% 解析法旋转矩阵对时间求导避免差分噪声 G_s w_s * [0 -1 0; 1 0 0; 0 0 0]; % 绕z轴角速度矩阵 G_c w_c * [0 0 1; 0 0 0; -1 0 0]; % 绕y轴角速度矩阵 vp zeros(3,11,np); f_md zeros(11,np); for n 1:np R_s [cos(w_s*t(n)) -sin(w_s*t(n)) 0; sin(w_s*t(n)) cos(w_s*t(n)) 0; 0 0 1]; R_c [cos(w_c*t(n)) 0 sin(w_c*t(n)); 0 1 0; -sin(w_c*t(n)) 0 cos(w_c*t(n))]; A R_c * R_s; dA G_c * R_s R_c * G_s; vp(:,:,n) dA * r0; for k 1:11 f_md(k,n) 2/lam * dot(vp(:,k,n), n_rad); end end求解方式谱线光滑度实现复杂度适用场景数值差分有量化毛刺低点数少、PRI 较大的快速验证解析求导光滑无附加噪声中需要精确边带幅度的正式仿真注意 G_s 和 G_c 必须与各自旋转矩阵的转轴一致。本脚本简化成绕 z 轴自旋、绕 y 轴锥旋如果改成任意空间进动轴G_c 要换成对应轴的叉乘矩阵形式否则解析速度与位置轨迹不一致频谱上会出现莫名其妙的“拍频”假象。3.3 载频、PRF、脉冲数与进动角的参数设置表参数脚本取值调节依据调错后果载频 fc10 GHz工作频段决定 λλ 越小微多普勒频移越大边带过高进入滤波器组盲区PRF1000 Hz需大于 2 倍 f_md_max建议留 3 倍余量频谱折叠、边带混淆成主瓣展宽脉冲数 np256频率分辨率 Δf PRF/np 需能分辨锥旋周期谱线梳齿无法分辨进动角 θ_p6°目标实际姿态散布边带展宽过窄或过宽锥旋角速度 ω_c2π·1.2 rad/s对应进动周期 0.83 s积累时间不足谱线周期看不全以本配置计算锥顶散射点臂长 0.45 mf_md_max ≈ 2 × 7.54 × 0.45 × sin(6°)/0.03 ≈ 23.6 HzPRF1000 余量很大。但如果把目标尺寸换成 5 m 量级f_md_max 会接近 200 HzPRF500 时边带就会折叠。调参数时先代入 2.3.1 的断言公式再决定 PRF而不是先定 PRF 再发现问题。提示PRF 不足时不要急着提高 PRF。先检查 f_md_max 是否按双向多普勒计算了 2/λ 因子很多入门代码只算了一个方向的频移导致 PRF 按一半取值边带必然混叠。4. 微多普勒谱与 MTD 动目标检测的联动分析4.1 从基带回波到距离-多普勒图的处理链有了每个脉冲时刻的散射点位置下一步是把 11 个点的相位贡献复加成一个复数值。设第 i 个散射点的反射系数为 A_i第 n 个脉冲、第 m 个距离门的基带信号为x_pulse(m,n) Σ_i A_i · exp(-j·4π·(R0(m) r_i(t_n)·n_rad)/λ)其中 R0(m) 是第 m 个距离门对应的参考斜距。这里的 r_i(t_n) 就是第 3.1 节 rp 矩阵的第 i 列、第 n 页。仿真输出一定要用复数 IQ不能取幅度再进 FFT否则相位信息全部丢失MTD 动目标检测等于白做。平动补偿是进入 MTD 之前必须完成的前置步骤。先做包络对齐再用单强散射点相位梯度法估计残余平动多普勒将 v_t·n_rad 项从相位中扣除。不做这一步微多普勒边带会被整体多普勒搬到离主峰很远的通道看起来像另一个目标。补偿后的 MTD 处理代码很简洁% 距离-多普勒图沿慢时间维做FFT Nfft 512; rd_map fftshift(fft(x_pulse, Nfft, 2), 2); f_axis ((-Nfft/2:Nfft/2-1) / Nfft) * prf; % 峰值搜索先用findpeaks粗检测 ridx 16; % 目标距离门索引 [~, pk_idx] findpeaks(abs(rd_map(ridx,:)), MinPeakHeight, 0.05); fd_est f_axis(pk_idx);x_pulse 是二维复矩阵第一维是距离门第二维是慢时间。FFT 沿第二维做得到的 rd_map 每一行是一条距离门的 Doppler 谱fftshift 把零频搬移到数组中心便于观察平动补偿后围绕 0 Hz 对称的微多普勒边带。findpeaks 需要 Signal Processing Toolbox没有的话用 islocalmax 替代。峰值搜索之前先用幅度归一化避免远距离门的大噪声被当目标选中。4.2 进动周期在距离-多普勒图中的可辨识特征把仿真得到的 f_md 逐点映射到多普勒通道后距离-多普勒图上的典型特征是中心主峰两侧对称分布两排旁瓣旁瓣间隔等于锥旋频率 f_c主瓣到一阶边带的距离随进动角增大而增大。自旋运动进一步把每个锥旋边带分裂出亚瓣亚瓣间距等于自旋频率 f_s。当 f_s 与 f_c 不可通约时谱线密集排列视觉上像梳状噪声——这不是数值错误而是准周期运动的固有结果。转速比 f_s/f_c谱形态对 MTD 检测的影响整数离散等间隔谱线能量集中易检测但可能落入置零通道被滤除有理数周期梳状谱边带通道增多CFAR 门限容易被抬高无理数近似连续包络能量散布单通道 SNR 损失明显工程上的含义是检测窗口不能只看主峰一个通道。锥旋频率与自旋频率的比值决定了边带能量在频域的分布密度进动越剧烈、转速比越接近无理数目标能量越分散MTD 的相参积累增益损失越大。4.3 MTD 检测门限与微多普勒特征的融合判据MTD 动目标检测的难点是微多普勒边带把目标能量散布到几十个多普勒通道单通道信噪比可能低于 CFAR 门限。标准做法分三步。第一步在二维 MTD 图上用 CA-CFAR 找候选峰值第二步对每个候选峰统计其左右若干个多普勒通道内的扩展能量第三步用进动先验做融合判定若已知目标进动角与锥旋频率扩展能量应主要集中在边带间隔整数倍位置。实际工程里有一块容易被忽视CFAR 训练窗会把边带谱线当噪声统计进均值导致门限被抬高真实主峰反而被判为杂波。修正手段是给被检测通道开一个保护窗口窗口宽度取 2×f_md_max/Δf 1只把窗口外的单元作为噪声训练样本。这个宽度不是经验值而是由目标最大微多普勒频移直接换算出来的通道数。扩展能量比可以量化为% 扩展能量比主峰附近doppler窗口能量占比 win 7; win_pow sum(abs(rd_map(ridx, pk_idx-win:pk_idxwin)).^2, 2); total_pow sum(abs(rd_map(ridx,:)).^2, 2); ext_ratio win_pow / total_pow; if ext_ratio 0.6 detect_flag 1; % 强微多普勒扩展型目标 end窗口宽度 win 的取值在本例中对应 Δf3.9 Hz、ω_c1.2 Hz主边带落在 7 个通道范围内。扩展能量比大于 0.6 意味着大部分能量集中在主峰附近说明这是平动补偿后残余多普勒很小、能量集中的动目标反之则要按扩展型目标处理不能只依赖单峰检测。特征融合的物理依据是微多普勒边带围绕主瓣是确定性结构不具备噪声的随机性因此能量分布特征与幅度门限联合使用能显著降低虚警。注意平动补偿不干净时残余平动多普勒会把对称边带整体搬移。此时扩展能量比依然可能很高但边带间隔与进动参数对不上这种数据直接丢弃不要进目标识别特征库。5. 进动参数反推校验与三个容易翻车的设置5.1 用频谱自检反推进动参数仿真不能只画图不验证。把第 4.1 节的 x_pulse 取目标所在距离门沿慢时间做 FFT 得到 spectrum_md然后从谱线间隔反推锥旋频率与设定值对比能在一个“最小闭环”里确认运动模型有没有写错% 自检从仿真频谱提取主边带间隔反推锥旋频率 spectrum_md abs(fftshift(fft(x_pulse(ridx,:), Nfft))); f_axis_1d ((-Nfft/2:Nfft/2-1) / Nfft) * prf; [~, locs] findpeaks(spectrum_md, MinPeakDistance, 5); spacings diff(f_axis_1d(locs)); f_c_est median(spacings(spacings 0.1)); err abs(f_c_est - w_c/(2*pi)) / (w_c/(2*pi)) * 100; assert(err 1, 锥旋频率反推误差超限%.2f%%, err);findpeaks 的 MinPeakDistance 设为 5 个采样点用来排除数值毛刺造成的伪峰。误差阈值取 1%如果反推频率与设定值对不上优先检查旋转矩阵顺序和进动轴归一化这两个地方错了但谱形看起来仍然合理只有反推闭环能暴露问题。5.2 三个容易翻车的参数区间现象根因规避法频谱折叠成锯齿并出现镜像PRF 小于 2 倍 f_md_max先用 2.3.1 公式计算PRF 留 3 倍余量谱线位置正确但幅度毛刺严重用数值差分求速度舍入噪声放大换成 3.2 节解析速度 A(t)·r0边带随视线变化闪烁、包络不成型散射点太少或遮挡效应未建模底面点从 6 加到 12加可见性因子遮挡效应在进动角较大时不能忽略。实现上就是对每个散射点乘一个 0/1 可见性标志散射点外法线与视线方向夹角大于 90° 时该点回波置零避免“看不见的散射点”凭空贡献谱线。可见性判断要用各点的瞬时外法线而不是初始外法线因为目标在转动外法线方向也在变。把这段自检脚本存成 md_selfcheck.m每次改参数先跑它再跑主仿真进动参数错位、PRF 不足、散射点遮挡遗漏这类问题会在进 FFT 之前直接被拦下。本文还有配套的精品资源点击获取
延伸阅读

更多相关文章

2026/9/14 14:34:51

uC/OS-II上下文切换原理与Cortex-M3汇编实现解析

1. 为什么从第 4 篇开始讲上下文切换——它才是 uC/OS-II 真正的“心跳” 你翻过 uC/OS-II 的源码目录,大概率会先被 os_core.c 和 os_task.c 吸引——毕竟任务创建、删除、挂起这些 API 名字直白,调用逻辑也容易跟踪。但真正让这个系统“活起来”的…

2026/9/14 14:34:51

基于Web的数据库管理工具DBViewer:架构设计与实践

1. 项目思路与整体架构设计DBViewer这个项目,一句话概括就是:把数据库管理工具从桌面客户端搬进浏览器,让所有人通过一个网址就能完成建连、查表、写SQL、看结果集这些日常操作。做这个事的起因并不复杂,团队里DBA和研发日常用的工…

2026/9/14 15:24:56

MetaMessage:统一WebSocket、WebRTC与SSE的消息层协议

二〇二四年接近年末的时候,IETF 的邮件列表里出现了一个轻量但野心不小的提案,名字叫MetaMessage。我第一眼看到它的时候,其实是抱着“又来一个协议”的心态点进去的,但读完 draft 的摘要之后,我意识到这东西跟那些“为…

2026/9/14 15:24:56

国产数据库选型指南:四大技术路线与三维评估框架

1. 先看清局面:为什么国产数据库选型特别容易踩坑国产数据库这几年是真热闹,随便一个行业技术大会,数据库厂商的展台一家挨着一家,各家PPT上都写着“兼容Oracle”“性能是MySQL的几倍”“金融级高可用”。可真轮到自己做数据库选型…

2026/9/14 15:24:56

PHP与Go性能对比:真实场景下的工程选型指南

1. 这不是“谁更快”的比赛,而是“谁在什么场景下更稳当”的工程选择我第一次在生产环境里把一个 Laravel 项目从 PHP-FPM 切到 Swoole 长连接模式时,QPS 确实从 800 跳到了 2400——但第二天凌晨三点,运维同事的电话就来了:内存泄…

2026/9/14 15:24:56

Matlab病态反演正则化工具箱:从原理到参数选择实战

简介:Matlab RegularizationTools是一套面向科研与工程人员的病态反演问题求解工具包,基于Matlab环境集成Tikhonov、L1、Landweber、Gauss-Newton等多种正则化算法,并配有L-curve、交叉验证等参数选择策略,可用于图像恢复、CT成像…

2026/9/14 15:19:55

GenUI SDK配置深度解析:从会话策略到VRF隔离的工程实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/14 2:17:50

拯救者Y7000黑屏故障排查与维修实战指南

1. 项目概述:一台黑屏的拯救者Y7000,到底卡在哪一步? 联想拯救者Y7000系列笔记本,从2018年第一代搭载i5-8300H开始,到后来的i7-9750H、i7-10750H、i5-11400H,再到2023年款的R7-7840HS,它始终是学…

2026/9/14 0:03:22

KCF目标跟踪算法与OTB工程实现:毕业设计实战解析

简介:这是一份基于KCF核相关滤波算法、融合尺度池与抗遮挡处理的目标检测跟踪MATLAB完整源码,主要面向计算机相关专业准备毕业设计、课程设计或期末大作业的学生,也适合需要项目实战练习的初学者。源码在OTB数据集上完成验证,能够…

2026/9/14 0:03:22

语音情感识别实战:Keras实现LSTM、CNN、SVM与MLP多模型对比

简介:面向语音情感识别入门与进阶开发者,这份基于Keras的项目源码完整实现了LSTM、CNN、SVM、MLP四种模型,兼容Python3.8与Keras/TensorFlow2环境。压缩包内含49个文件,大小约70.31MB,主体包括Python脚本、yaml/json配…

2026/9/14 11:59:31

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/14 13:53:59

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/14 11:22:57

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
咨询二维码