乐于分享
好东西不私藏

【MATLAB源码-第449期】基于MATLAB的MSK调制系统中IQ相干、差分、鉴频与Viterbi解调算法对比仿真.

【MATLAB源码-第449期】基于MATLAB的MSK调制系统中IQ相干、差分、鉴频与Viterbi解调算法对比仿真.
操作环境:

MATLAB 2024a

1、算法描述

基于 MATLAB 的 MSK 五种解调算法误码性能对比仿真系统设计

摘要

最小频移键控是一类具有连续相位特性的数字调制方式,适合用于对频谱效率、恒包络特性和功率放大器适应性有要求的通信系统。连续相位调制的核心特点是载波相位在符号切换过程中保持连续,因此信号具有一定记忆性,接收端不能简单地按照普通线性调制信号进行独立符号判决。MathWorks 对连续相位调制的说明中明确指出,连续相位调制通过消息序列调制连续相位信号的频率,并且由于相位连续约束而具有记忆特性;其中 MSK 属于 CPM 和 CPFSK 的一种特殊形式,调制指数为二分之一,频率脉冲为一个符号长度的矩形脉冲。 本课题基于 MATLAB 搭建 MSK 调制与解调仿真系统,围绕 IQ 相干解调、1 比特差分解调、2 比特差分解调、鉴频解调和 Viterbi 解调五种方法进行统一建模、统一信道加噪和统一误码率统计。系统生成发送比特、MSK 复基带波形、连续相位轨迹、频谱图、各类判决量曲线以及 BER 对比曲线,用于直观分析不同解调算法在加性高斯白噪声条件下的性能差异。仿真结果表明,Viterbi 解调在该系统设定下误码性能最好,IQ 相干解调次之,差分类算法具有实现简单但性能受限的特点,鉴频解调复杂度低但误码率最高。该系统结构清晰、图像完整、算法覆盖面较广,适合作为通信原理、数字调制解调、MSK 仿真分析和算法对比类课题的 MATLAB 实验平台。

关键词

MSK调制;连续相位调制;IQ相干解调;差分解调;Viterbi解调;误码率对比;MATLAB仿真

1 引言

数字通信系统的核心任务,是在带宽、功率、复杂度和误码性能之间取得平衡。传统的 ASK、FSK、PSK 等调制方式各有优势,但在频谱利用率、相位连续性和非线性功放适应性方面并不完全一致。MSK 属于连续相位调制的重要分支,它可以看作一种特殊的连续相位频移键控。与普通二进制频移键控相比,MSK 的频率间隔取最小正交条件,符号切换时相位不发生突变,因此频谱旁瓣相对更容易控制,恒包络特性也有利于功率放大器工作。

从工程角度看,MSK 调制的难点不在于发送端生成波形,而在于接收端如何充分利用连续相位带来的记忆性。普通调制方式的接收机往往可以在每个符号时刻独立采样并判决,但 MSK 的当前符号状态与前一阶段的相位累积存在关联。如果接收机完全忽略这种关联,就会损失性能;如果接收机完整利用相位状态和序列信息,复杂度又会明显上升。连续相位调制接收机常见的工程矛盾,正是性能和复杂度之间的取舍。

现有资料和工具也能说明这一点。MathWorks 的 MSK 调制模块说明中提到,MSK 基带调制输出是调制信号的基带表示,并且样本数与每符号采样点设置直接相关;其 MSK 解调 System object 文档也说明,MSK 解调对象采用 Viterbi 算法处理 MSK 调制数据。 这说明 Viterbi 并不是随意添加的高级算法,而是 MSK 这类带记忆调制信号接收中的典型处理方式。

本课题的主要目的不是只实现单一 MSK 调制解调链路,而是把五种不同接收思路放在同一仿真框架下对比。五种方法分别代表不同复杂度层级。IQ 相干解调依赖相位校正和相干模板匹配,性能较好但需要相位参考。1 比特差分解调和 2 比特差分解调减少了对绝对相位的依赖,实现更直接,但误差会沿判决状态传播。鉴频解调通过相邻采样点的相位变化提取瞬时频率符号,结构最简单,但对噪声较敏感。Viterbi 解调利用 MSK 的有限相位状态进行序列检测,能够更充分利用连续相位记忆,因此误码性能通常更优。该对比框架具有清晰的教学价值和工程理解价值。

2 系统模型与仿真设计

本系统采用 MATLAB 作为仿真平台,主程序为 main.m,功能函数放置在 function 文件夹中。主程序首先完成环境初始化、随机种子固定、图像文件夹清理和仿真参数配置。参数设置包括比特率、每比特采样点数、采样率、单点演示信噪比、前导序列长度、有效数据长度、固定载波相位偏差和 BER 扫描范围。这样的结构有两个好处:第一,所有核心仿真参数集中在主程序开头,便于后续修改;第二,调制、加噪、相位校正、解调、误码率计算和图像保存被拆分为独立函数,工程结构更清楚。

系统首先构造一段确定性前导序列,再生成随机数据比特。前导序列不是用于统计误码率,而是用于接收端相位估计和状态初始化。这样处理更接近实际通信系统中的训练序列思想。随后,程序将前导序列和数据序列拼接,送入 MSK 连续相位调制函数。发送信号在接收端被施加固定相位偏差,并叠加复高斯白噪声。对于需要相干接收的 IQ 相干解调和 Viterbi 解调,系统利用前导序列进行公共相位估计和补偿;对于差分解调和鉴频解调,则主要使用未相位校正或弱依赖绝对相位的接收信号进行判决。

该设计的关键点是公平性。五种解调算法使用同一组发送比特、同一套 MSK 调制信号、同一段信道加噪条件和同一套误码率统计函数。这样可以避免因为数据源不同、噪声条件不同或统计区间不同造成的对比偏差。主程序中 BER 扫描范围设置为 0 dB 到 14 dB,步进为 2 dB。每一个信噪比点均调用同一个接收信号生成函数,再分别送入五种解调器,最后统一统计前导之后的数据误码率。

从输出结果看,系统生成七张图像。第一张图展示发送比特、MSK 复基带波形和连续相位轨迹;第二张图展示发送信号与接收信号频谱;第三张图展示 IQ 相干解调判决量和判决结果;第四张图展示 1 比特差分与 2 比特差分的判决量对比;第五张图展示鉴频解调判决量;第六张图展示 Viterbi 累计路径度量和判决结果;第七张图展示五种算法 BER 曲线。图像数量不多,但覆盖了信号生成、频域特性、判决过程和最终性能评价,信息密度比较合理。

3 MSK 调制原理与实现思路

MSK 的本质是一种连续相位调制。发送端并不是在每个符号边界强行切换相位,而是让相位按照当前比特对应的方向连续变化。比特被映射为正负相位斜率,每一个比特周期内相位变化方向不同,但相位轨迹在时间上保持连续。MathWorks 的连续相位调制说明中给出,MSK 是 CPFSK 的特殊形式,其调制指数为二分之一,并且频率脉冲为一个符号长度的矩形脉冲。 这正好对应本系统中每比特相位连续推进的建模方式。

在程序实现中,msk_cpm_mod 函数负责完成调制。它首先把二进制比特映射为正负符号,然后按照每比特采样点数生成归一化时间变量。对于每一个比特,函数根据当前比特的正负符号计算该比特周期内的相位轨迹,并把上一比特结束时的相位作为下一比特起点。这样可以确保整个发送序列的相位连续。最后,程序将相位序列转换成复指数形式,得到恒包络复基带信号。

这种实现方法的好处是直观。它没有把 MSK 仅仅看成调制工具箱中的黑箱模块,而是直接生成连续相位轨迹。通过第一张图可以看到发送比特与复基带 I/Q 分量之间的关系,也可以看到相位轨迹并不是离散跳变,而是连续上升或下降。这对于理解 MSK 与普通 PSK 的区别非常关键。普通 PSK 更强调符号点之间的相位状态,而 MSK 更强调相位轨迹的连续演进。只看星座点可能会低估 MSK 的时域记忆性,必须结合相位轨迹和每符号采样过程观察。

4 五种解调算法设计

第一种算法是 IQ 相干解调。该方法先利用前导序列估计公共相位偏差,然后构造当前相位状态下的正负模板,对接收采样段进行相关判决。它的基本逻辑是:如果接收信号与正向相位增量模板更匹配,则判为一类比特;如果与负向相位增量模板更匹配,则判为另一类比特。IQ 相干解调的优点是判决依据清楚,能利用相位状态信息;缺点是需要可靠的相位校正和状态跟踪。一旦相位估计不准,模板相关结果就会偏移。

第二种算法是 1 比特差分解调。该方法主要比较当前比特采样段与正负相位增量模板的相关程度,不强依赖绝对相位。它的优势是结构简单,对固定相位偏差的敏感度低于纯相干判决;不足是它对噪声下的局部判决更敏感,而且没有充分利用更长序列的状态信息。它适合用作低复杂度基线算法。

第三种算法是 2 比特差分解调。相比 1 比特差分,它引入了前一比特的判决符号,用两个比特长度的采样窗口构造模板。这样做可以在一定程度上利用相邻符号关系,提高判决信息量。实际仿真中,2 比特差分的 BER 明显优于 1 比特差分,说明在 MSK 这种有记忆的调制方式下,扩大判决窗口是有价值的。但该算法仍然依赖前一符号判决结果,因此错误可能传播。

第四种算法是鉴频解调。它通过相邻采样点共轭相乘提取相位变化趋势,再对一个比特周期内的瞬时频率符号进行积分。该方法实现简单,不需要复杂的相干参考模板,适合说明 MSK 作为频移键控特殊形式时的频率判决思路。Liu 和 Santhanam 在 2018 年关于宽带部分响应 CPM 解调的研究中也提到,频率鉴别类方法相比 Viterbi 路径具有更简单的次优实现思路,但其适用范围和性能会受到调制记忆及信道条件影响。 本系统中的鉴频解调正好体现了这种低复杂度与性能损失之间的取舍。

第五种算法是 Viterbi 解调。该算法把 MSK 的相位状态划分为有限状态,并在每个比特时刻考察正负两类状态转移。对于每条候选路径,程序计算接收采样段与参考模板之间的相关度,并累加为路径度量。每个状态只保留当前最优幸存路径,最后从最大路径度量状态反向回溯,得到整段数据的最优判决序列。Viterbi 解调充分利用了 MSK 信号的记忆性,因此在误码性能上有明显优势。相关研究也指出,CPM 接收常常会使用 MLSD、MAP、Viterbi 或 BCJR 等序列处理方法,但这些方法通常伴随较高的复杂度。

5 MATLAB 仿真实现流程

本项目代码结构比较清晰。main.m 是主控脚本,负责参数设置、数据生成、调制解调调用、误码率统计和结果绘图。function 文件夹中包含 add_noise、ber0、ber_stop、cpm_phase_fix、dem_diff1、dem_diff2、dem_fm、dem_iq、dem_vit、make_cpm_rx、msk_cpm_mod、save_png 和 spec0 等函数。每个函数只承担一类任务,避免了主程序过长和变量关系混乱的问题。

add_noise 函数根据每比特平均能量和设定的 Eb/N0 计算噪声强度,并叠加复高斯白噪声。cpm_phase_fix 函数利用前导段与本地参考信号的相关结果估计公共相位偏差,再对接收信号进行相位补偿。make_cpm_rx 函数把相位偏差、加噪和相位修正集中封装,使主程序在不同信噪比扫描时调用更简洁。ber0 函数只统计前导之后的数据比特误码率,避免把已知训练序列计入性能评价。ber_stop 函数用于半对数 BER 图显示,把零误码点及其之后的数据置空,防止曲线在对数坐标下显示异常。

绘图部分并不是简单堆图,而是按照通信系统分析逻辑展开。先展示发送比特、基带波形和相位轨迹,再展示频谱,然后分别展示相干、差分、鉴频和 Viterbi 的判决过程,最后汇总 BER 曲线。这种图像安排便于写论文、做演示和讲解算法差异。对于通信仿真项目来说,只给 BER 曲线是不够的,因为读者无法判断信号生成是否正确、相位是否连续、判决量是否合理。该项目通过多角度图像输出,降低了结果解释难度。

6 仿真结果分析

根据项目 result.mat 中保存的数据,在 Eb/N0 为 8 dB 的单点演示下,五种算法的 BER 分别为:IQ 相干解调约为 0.0175,1 比特差分解调约为 0.079625,2 比特差分解调约为 0.04275,鉴频解调约为 0.277,Viterbi 解调约为 0.0005。从该结果可以看出,Viterbi 解调性能最优,IQ 相干解调性能次之,2 比特差分优于 1 比特差分,鉴频解调误码率最高。

这一结果符合算法机理。Viterbi 解调不是只看当前符号,而是通过状态转移和路径度量寻找整段序列的最优判决。MSK 信号本身具有连续相位记忆,因此序列检测方法更容易发挥优势。IQ 相干解调利用当前相位状态构造模板,能获得较好的判决性能,但它仍然是逐符号推进,一旦前面判错或相位状态更新错误,后续判决会受到影响。2 比特差分比 1 比特差分多利用一个比特区间的信息,因此误码率降低。鉴频解调虽然实现最简单,但它对噪声非常敏感,尤其在低到中等信噪比下,瞬时相位差的波动会直接影响积分符号,导致误判明显增加。

从 BER 扫描结果看,随着 Eb/N0 从 0 dB 提高到 14 dB,五种算法 BER 均总体下降。Viterbi 解调在中高信噪比区域很快接近零误码,说明它对 AWGN 条件下的 MSK 序列检测非常有效。IQ 相干解调也随信噪比提升快速改善,在 12 dB 和 14 dB 区域已接近零误码。2 比特差分的下降速度明显快于 1 比特差分,说明引入相邻符号关系对 MSK 解调有效。鉴频解调虽然也随信噪比提高而改善,但整体 BER 仍远高于其他方法,说明它更适合作为低复杂度参考,而不是高可靠接收方案。

具体来看,在 0 dB 条件下,Viterbi BER 约为 0.139,IQ 相干约为 0.288,1 比特差分约为 0.351375,2 比特差分约为 0.3165,鉴频约为 0.45475。在低信噪比下,所有算法都受到噪声影响,但 Viterbi 依然保留最明显优势。在 10 dB 条件下,Viterbi 已达到零误码记录,IQ 相干约为 0.00275,2 比特差分约为 0.0095,1 比特差分约为 0.0375,而鉴频仍有约 0.205625 的 BER。这个差距说明,复杂度增加并非无意义;对于 MSK 这种有记忆信号,接收机是否利用序列结构,会直接决定误码性能上限。

不过,也不能简单得出“Viterbi 永远最好,所以其他算法没有价值”的结论。工程系统不只看 BER,还要考虑计算量、实时性、硬件资源、相位同步条件和系统应用场景。Viterbi 解调性能好,但需要维护状态度量和回溯路径。IQ 相干解调需要可靠相位估计。差分解调实现简单,适合对复杂度敏感的场景。鉴频解调虽然性能较弱,但在快速原型验证、教学演示和粗略接收场景中仍有意义。真正的工程选择,应当在性能、复杂度和系统条件之间折中。

7 系统特点

本系统第一个特点是算法覆盖完整。它不是只实现 MSK 调制加一种解调方式,而是覆盖相干、差分、鉴频和序列检测四类代表性思路。对于学习者来说,这比单一 BER 曲线更有价值,因为可以直接看到不同接收机思想的性能边界。

第二个特点是对比条件统一。五种算法使用同一组发送数据、同一调制函数、同一接收信号生成流程和同一误码率统计函数。这样得到的 BER 曲线更适合做横向对比,不容易因为仿真条件不一致造成误导。

第三个特点是图像输出完整。系统不仅输出最终 BER 曲线,还输出时域波形、连续相位轨迹、频谱图和各算法判决量图。通信算法仿真最怕只有结论没有过程,本系统通过图像把信号生成、判决依据和性能结果串联起来,便于写论文和答辩讲解。

第四个特点是结构适合扩展。当前信道采用 AWGN,后续可以继续加入载波频偏、采样偏差、多径衰落、瑞利信道、定时误差或非理想前导同步。当前算法也可以继续扩展到软判决 Viterbi、最大似然序列估计、MAP 检测或深度学习辅助解调。现代 CPM 接收研究已经开始关注频率选择性信道、迭代均衡、消息传递和低复杂度实现等方向。 因此,该项目不仅适合作为基础仿真,也可以作为进一步扩展的底层框架。

第五个特点是代码组织较清晰。主程序负责流程控制,函数文件负责具体算法,图像统一保存到 figure 文件夹,结果数据保存到 result.mat。这样的组织方式利于复现实验,也利于后续维护。

8 结论

本文基于 MATLAB 设计并实现了 MSK 五种解调算法误码性能对比仿真系统。系统从随机比特生成、前导序列构造、MSK 连续相位调制、接收端加噪和相位偏差引入开始,分别实现了 IQ 相干解调、1 比特差分解调、2 比特差分解调、鉴频解调和 Viterbi 解调,并通过统一 BER 统计方式完成性能对比。仿真结果表明,在当前参数设定和 AWGN 信道条件下,Viterbi 解调性能最好,IQ 相干解调具有较好性能,2 比特差分优于 1 比特差分,鉴频解调复杂度最低但误码率最高。

该结果说明,MSK 解调不能只看单个采样点或单个符号的局部判决。由于 MSK 属于连续相位调制,信号本身包含相位记忆,接收机越能利用这种记忆,误码性能通常越好。但性能提升会带来复杂度增加,所以实际工程中仍需结合硬件资源、同步条件和实时性要求综合选择。对于教学和课题实现而言,本项目具有较好的完整性和可解释性。它既能展示 MSK 的连续相位特征,也能比较不同解调算法的误码性能,还能通过多张图像呈现判决过程和结果变化。后续若继续扩展,可以加入多径衰落、载波频偏、符号定时误差和更复杂的序列检测算法,使系统更接近真实无线通信环境。

参考文献

  1. Liu, Wenjing, and Balu Santhanam. “Wideband Partial Response CPM Demodulation via Multirate Frequency Transformations and Decision Feedback Equalization.” EURASIP Journal on Wireless Communications and Networking, vol. 2018, article no. 91, 2018. 
  2. Semenov, V. Y. “Demodulation Method for Continuous Phase Modulation Signals Based on Least-Squares Method.” Radioelectronics and Communications Systems, 2018. 
  3. Zhou, Y., R. F. Duan, and B. F. Jiang. “A Low-Complexity Implementation Scheme for PCM/FM Based on MLSD.” Proceedings of the 2019 15th International Wireless Communications and Mobile Computing Conference, 2019. 
  4. Su, Y., J. Zhao, and G. Sun. “Low Complexity Method for Recovering Continuous Phase Modulation Signals with Low Signal-to-Noise Ratios.” Journal of Communications Technology and Electronics, 2020, pp. 843–847. 
  5. Chamaa, M. E., and B. Lankl. “Noncoherent Symbol Detection of Short CPM Bursts in Frequency-Selective Fading Channels.” IEEE Transactions on Wireless Communications, vol. 19, no. 2, 2020, pp. 771–782. 
  6. Pan, Z., et al. “Blind Turbo Equalization of Short CPM Bursts for UAV Data Collection.” Sensors, vol. 22, no. 17, 2022. 
  7. Hill, B. “A Complete Receiver for a Multi-h Continuous Phase Frequency Shift Keyed Signal.” Utah State University, 2022. 
  8. Wang, L., H. Wen, X. Wu, and Q. Song. “Design and Implementation of a Low-Complexity Multi-h CPM Receiver with Linear Phase Approximation Synchronization Algorithm.” Entropy, vol. 25, 2023, article 1530. 
  9. El Ghzaoui, Mohammed. “CPM Modulation Implementation Using Blind Equalizer and Non-Coherent Demodulation for 5G and Beyond.” International Journal of System Assurance Engineering and Management, vol. 15, no. 6, 2024, pp. 2097–2104. 
  10. Liu, Zilong, Yi Song, Qinghua Guo, Peng Sun, Kexian Gong, and Zhongyong Wang. “Iterative Equalization of CPM With Unitary Approximate Message Passing.” 2024.

2、仿真结果演示

3、关键代码展示

当下时代学习怎么用AI是每个人已经之路,给大家推荐几本书:学习AI相关使用技巧!!!                       抓住时代红利!!!

4、MATLAB 源码获取

途径一:点击文章中蓝色字体阅读原文

途径二:复制以下网址到浏览器中打开麦完单品

https://www.maiwan8.com/#/dynamicDetail/0/21ace130025985b16e4620e03b4330a8/index?yqm=5FCPU

途径三:复制网址打开麦完店铺搜索该篇文章标题即可

https://www.maiwan8.com/#/packageA/userDynamicCenter/userDynamicCenter?user_id=1261511

途径四:如果以上方式均失效请通过QQ,邮或者微信公众号联系我

                                (点击上方↑↑↑↑↑蓝色字体跳转)

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-05-27 18:34:46 HTTP/1.1 GET : https://www.yeyulingfeng.com/a/669979.html
  2. 运行时间 : 0.222723s [ 吞吐率:4.49req/s ] 内存消耗:4,680.63kb 文件加载:145
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=fe6173819283e9ef239e13152df33761
  1. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/public/index.php ( 0.79 KB )
  2. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/autoload.php ( 0.17 KB )
  3. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/autoload_real.php ( 2.49 KB )
  4. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/platform_check.php ( 0.90 KB )
  5. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/ClassLoader.php ( 14.03 KB )
  6. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/autoload_static.php ( 6.05 KB )
  7. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/helper.php ( 8.34 KB )
  8. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-validate/src/helper.php ( 2.19 KB )
  9. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/ralouphie/getallheaders/src/getallheaders.php ( 1.60 KB )
  10. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/helper.php ( 1.47 KB )
  11. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/stubs/load_stubs.php ( 0.16 KB )
  12. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Exception.php ( 1.69 KB )
  13. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-container/src/Facade.php ( 2.71 KB )
  14. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/deprecation-contracts/function.php ( 0.99 KB )
  15. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/polyfill-mbstring/bootstrap.php ( 8.26 KB )
  16. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/polyfill-mbstring/bootstrap80.php ( 9.78 KB )
  17. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/var-dumper/Resources/functions/dump.php ( 1.49 KB )
  18. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-dumper/src/helper.php ( 0.18 KB )
  19. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/var-dumper/VarDumper.php ( 4.30 KB )
  20. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/guzzlehttp/guzzle/src/functions_include.php ( 0.16 KB )
  21. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/guzzlehttp/guzzle/src/functions.php ( 5.54 KB )
  22. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/App.php ( 15.30 KB )
  23. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-container/src/Container.php ( 15.76 KB )
  24. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/container/src/ContainerInterface.php ( 1.02 KB )
  25. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/provider.php ( 0.19 KB )
  26. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Http.php ( 6.04 KB )
  27. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/helper/Str.php ( 7.29 KB )
  28. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Env.php ( 4.68 KB )
  29. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/common.php ( 0.03 KB )
  30. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/helper.php ( 18.78 KB )
  31. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Config.php ( 5.54 KB )
  32. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/alipay.php ( 3.59 KB )
  33. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/Env.php ( 1.67 KB )
  34. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/app.php ( 0.95 KB )
  35. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/cache.php ( 0.78 KB )
  36. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/console.php ( 0.23 KB )
  37. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/cookie.php ( 0.56 KB )
  38. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/database.php ( 2.48 KB )
  39. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/filesystem.php ( 0.61 KB )
  40. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/lang.php ( 0.91 KB )
  41. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/log.php ( 1.35 KB )
  42. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/middleware.php ( 0.19 KB )
  43. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/route.php ( 1.89 KB )
  44. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/session.php ( 0.57 KB )
  45. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/trace.php ( 0.34 KB )
  46. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/view.php ( 0.82 KB )
  47. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/event.php ( 0.25 KB )
  48. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Event.php ( 7.67 KB )
  49. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/service.php ( 0.13 KB )
  50. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/AppService.php ( 0.26 KB )
  51. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Service.php ( 1.64 KB )
  52. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Lang.php ( 7.35 KB )
  53. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/lang/zh-cn.php ( 13.70 KB )
  54. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/Error.php ( 3.31 KB )
  55. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/RegisterService.php ( 1.33 KB )
  56. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/services.php ( 0.14 KB )
  57. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/service/PaginatorService.php ( 1.52 KB )
  58. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/service/ValidateService.php ( 0.99 KB )
  59. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/service/ModelService.php ( 2.04 KB )
  60. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/Service.php ( 0.77 KB )
  61. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Middleware.php ( 6.72 KB )
  62. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/BootService.php ( 0.77 KB )
  63. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/Paginator.php ( 11.86 KB )
  64. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-validate/src/Validate.php ( 63.20 KB )
  65. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/Model.php ( 23.55 KB )
  66. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/Attribute.php ( 21.05 KB )
  67. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/AutoWriteData.php ( 4.21 KB )
  68. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/Conversion.php ( 6.44 KB )
  69. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/DbConnect.php ( 5.16 KB )
  70. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/ModelEvent.php ( 2.33 KB )
  71. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/RelationShip.php ( 28.29 KB )
  72. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/contract/Arrayable.php ( 0.09 KB )
  73. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/contract/Jsonable.php ( 0.13 KB )
  74. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/contract/Modelable.php ( 0.09 KB )
  75. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Db.php ( 2.88 KB )
  76. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/DbManager.php ( 8.52 KB )
  77. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Log.php ( 6.28 KB )
  78. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Manager.php ( 3.92 KB )
  79. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/log/src/LoggerTrait.php ( 2.69 KB )
  80. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/log/src/LoggerInterface.php ( 2.71 KB )
  81. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Cache.php ( 4.92 KB )
  82. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/simple-cache/src/CacheInterface.php ( 4.71 KB )
  83. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/helper/Arr.php ( 16.63 KB )
  84. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/cache/driver/File.php ( 7.84 KB )
  85. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/cache/Driver.php ( 9.03 KB )
  86. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php ( 1.99 KB )
  87. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/Request.php ( 0.09 KB )
  88. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Request.php ( 55.78 KB )
  89. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/middleware.php ( 0.25 KB )
  90. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Pipeline.php ( 2.61 KB )
  91. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/TraceDebug.php ( 3.40 KB )
  92. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/middleware/SessionInit.php ( 1.94 KB )
  93. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Session.php ( 1.80 KB )
  94. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/session/driver/File.php ( 6.27 KB )
  95. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php ( 0.87 KB )
  96. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/session/Store.php ( 7.12 KB )
  97. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Route.php ( 23.73 KB )
  98. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleName.php ( 5.75 KB )
  99. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/Domain.php ( 2.53 KB )
  100. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleGroup.php ( 22.43 KB )
  101. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/Rule.php ( 26.95 KB )
  102. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleItem.php ( 9.78 KB )
  103. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/route/app.php ( 3.94 KB )
  104. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/Route.php ( 4.70 KB )
  105. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/dispatch/Controller.php ( 4.74 KB )
  106. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/Dispatch.php ( 10.44 KB )
  107. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/controller/Index.php ( 9.87 KB )
  108. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/BaseController.php ( 2.05 KB )
  109. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/facade/Db.php ( 0.93 KB )
  110. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/connector/Mysql.php ( 5.44 KB )
  111. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/PDOConnection.php ( 52.47 KB )
  112. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Connection.php ( 8.39 KB )
  113. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/ConnectionInterface.php ( 4.57 KB )
  114. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/builder/Mysql.php ( 16.58 KB )
  115. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Builder.php ( 24.06 KB )
  116. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/BaseBuilder.php ( 27.50 KB )
  117. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Query.php ( 15.71 KB )
  118. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/BaseQuery.php ( 45.13 KB )
  119. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php ( 7.43 KB )
  120. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php ( 3.26 KB )
  121. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php ( 20.07 KB )
  122. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ParamsBind.php ( 3.66 KB )
  123. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ResultOperation.php ( 7.01 KB )
  124. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/WhereQuery.php ( 19.37 KB )
  125. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php ( 7.11 KB )
  126. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php ( 2.63 KB )
  127. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/Transaction.php ( 2.77 KB )
  128. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/log/driver/File.php ( 5.96 KB )
  129. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php ( 0.86 KB )
  130. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/log/Channel.php ( 3.89 KB )
  131. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/event/LogRecord.php ( 1.02 KB )
  132. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/Collection.php ( 16.47 KB )
  133. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/View.php ( 1.70 KB )
  134. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/View.php ( 4.39 KB )
  135. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/controller/Es.php ( 3.30 KB )
  136. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Response.php ( 8.81 KB )
  137. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/response/View.php ( 3.29 KB )
  138. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
  139. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-view/src/Think.php ( 8.38 KB )
  140. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
  141. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/Template.php ( 46.61 KB )
  142. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/template/driver/File.php ( 2.41 KB )
  143. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/template/contract/DriverInterface.php ( 0.86 KB )
  144. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/runtime/temp/c935550e3e8a3a4c27dd94e439343fdf.php ( 31.50 KB )
  145. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
  1. CONNECT:[ UseTime:0.001072s ] mysql:host=127.0.0.1;port=3306;dbname=wenku;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.001820s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000685s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000558s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.001484s ]
  6. SELECT * FROM `set` [ RunTime:0.000485s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.001468s ]
  8. SELECT * FROM `article` WHERE `id` = 669979 LIMIT 1 [ RunTime:0.001031s ]
  9. UPDATE `article` SET `lasttime` = 1779878087 WHERE `id` = 669979 [ RunTime:0.001705s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 64 LIMIT 1 [ RunTime:0.000713s ]
  11. SELECT * FROM `article` WHERE `id` < 669979 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.001181s ]
  12. SELECT * FROM `article` WHERE `id` > 669979 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.001227s ]
  13. SELECT * FROM `article` WHERE `id` < 669979 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.001939s ]
  14. SELECT * FROM `article` WHERE `id` < 669979 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.002613s ]
  15. SELECT * FROM `article` WHERE `id` < 669979 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.002023s ]
0.224539s