1. 项目概述为什么OTFS值得你花一个周末去啃老实说第一次接触OTFSOrthogonal Time Frequency Space正交时频空间调制这个概念时我的第一反应是“又一个学术圈自嗨的波形方案”。毕竟OFDM已经统治无线通信物理层二十多年从Wi-Fi到5G NR地位稳如老狗。但当我真正把高速移动场景下的性能曲线跑出来之后才意识到这东西不是纸上谈兵——在500km/h的高铁场景下OFDM的子载波间干扰ICI会把误码率曲线直接打穿而OTFS在同样的信道条件下还能保持相对干净的星座图。这个项目做的事情简单说就是三件事第一建立一套适合OTFS仿真的时延-多普勒域信道模型第二实现核心的均衡算法并在该信道模型下验证性能第三把整个流程从发端波形生成到收端解调做成可复现的代码链路。如果你正在做高速移动通信、车联网V2X或者低轨卫星通信相关的物理层算法研究或者你是通信专业的硕博生想快速上手一个非OFDM的调制波形方案这篇文章值得你耐心看完。我不打算按照教科书的路子给你讲一堆辛几何和格论那些数学推导网上论文里到处都是。我只会从一个实际写代码、搭仿真、调参数的工程师视角把信道建模和均衡算法实现过程中真正卡脖子的地方、容易踩的坑、以及实测下来最稳的参数配置讲清楚。本文配套的代码基于MATLAB实现核心算法部分我会贴出关键代码段并逐行解释。2. OTFS核心原理与时延-多普勒域思维转换2.1 从OFDM的“频率-时间”思维到OTFS的“时延-多普勒”思维要理解OTFS首先要完成一次坐标系转换。OFDM把信息符号映射在时频网格上即每个资源格对应特定的子载波频率和OFDM符号时间。这种映射在信道时变性不明显的场景下非常优雅因为信道的频率选择性可以通过频域均衡轻松处理时间选择性则通过短符号来对抗。但问题在于当移动速度提升到一定程度信道的时间选择性急剧恶化OFDM符号内的信道变化导致子载波正交性被破坏ICI成为主要干扰源。这个问题的根源在于OFDM把信道视为“时变但频选”的LTI系统近似而高速移动下这个近似不再成立。OTFS的做法是彻底换一个坐标系。它先通过逆辛傅里叶变换ISFFT把时延-多普勒域的调制符号映射到时频域再通过传统的OFDM调制把时频域信号发送出去接收端则是反向操作。这样一来信息符号被“摊平”在整个时频资源块上每个符号经历的是平均化的信道响应时变信道在DD域中反而表现出近似时不变、稀疏的特性。这里的关键直觉是多普勒效应在时频域表现为频率偏移但在时延-多普勒域中它就是一个沿着多普勒轴的恒定偏移量信道的稀疏多径结构也能被清晰展现出来。这个思维转换带来的直接好处有两个一是信道估计和均衡变得更简单因为DD域信道稀疏且随时间慢变二是每个符号的SNR趋于一致避免了OFDM中深衰落子载波导致的整体性能瓶颈。2.2 OTFS收发端系统模型与网格参数设计OTFS系统的核心参数用矩阵维度来描述时延轴网格数N对应一个OTFS帧内的符号数和多普勒轴网格数M对应子载波数。一个OTFS帧承载N×M个QAM符号经过ISFFT变换后映射到M个子载波、N个OFDM符号的时频网格上。这里有一个重要的设计权衡时延分辨率和多普勒分辨率分别由什么决定时延分辨率由总带宽决定即Δτ 1/(MΔf)其中Δf是子载波间隔多普勒分辨率由帧持续时间决定即Δν 1/(NT)。这意味着要同时获得精细的时延分辨率和多普勒分辨率需要更大的带宽和更长的帧时长但帧过长会导致信道在帧内不再满足近似时不变假设这是一个绕不开的矛盾。我在仿真中使用的参数如下表所示这套参数参考了3GPP高速移动场景的配置思路参数名称符号数值子载波数多普勒轴M128符号数时延轴N32子载波间隔Δf15 kHz载波频率fc4 GHz调制方式QAM16-QAM移动速度v500 km/h归一化最大多普勒ν_max0.1以多普勒间隔为单位归一化多普勒的计算方式为ν_max v·fc·NT/(c·M)其中c为光速NT对应一个OTFS帧的时长。代入上述参数后可以算出归一化多普勒约为0.1这是一个很适合展示OTFS相对OFDM优势的区间——OFDM在此条件下已经出现明显的ICI地板效应而OTFS仍能维持可接受的BER。2.3 OTFS与OFDM在高移动性场景下的对比我在同一套信道参数下分别跑了OTFS和OFDM的BER曲线对比结果非常直观当移动速度在100km/h以下时两者性能几乎重合当速度提升到300km/h以上OFDM的BER曲线开始出现错误地板即使增加发射功率也无济于事而OTFS的BER曲线仍然保持正常的瀑布曲线形状。这个现象的根本原因就是OFDM的子载波正交性被多普勒破坏后ICI无法通过简单的频域均衡来消除而OTFS在DD域的均衡天然具备多普勒补偿能力。这个对比实验建议每个做OTFS的人都亲手跑一遍它能非常直观地帮你理解OTFS的设计动机。我自己的体会是光看论文里的理论分析远不如跑一条BER曲线来得有说服力。3. 时延-多普勒域信道建模的实现细节3.1 信道模型的选择从抽头延迟线到DD域稀疏表示做OTFS仿真最忌讳的事情是直接把OFDM仿真的频域信道矩阵拿过来用。OTFS需要的是时延-多普勒域的信道表示因此必须建立能够直接生成DD域信道系数的模型。目前主流方案有两种第一种是从抽头延迟线TDL模型出发通过采样和变换得到DD域信道第二种是直接在DD域定义多径分量的时延、多普勒频移和复数增益。我采用的是第二种因为它在物理意义和代码实现上更清晰每条径就是一个点分布在时延-多普勒平面上其增益由路径损耗和小尺度衰落共同决定。DD域信道冲激响应可以写作h(τ, ν) Σ(i1 to P) h_i · δ(τ - τ_i) · δ(ν - ν_i)其中P是路径数h_i是第i条路径的复增益τ_i和ν_i分别是该路径的时延和多普勒频移。在离散化之后τ_i和ν_i会落在网格点上但也可能落在网格点之间这就涉及能量泄漏的问题。3.2 路径数、多普勒频移与功率时延谱的设置信道参数的选择直接决定均衡算法的性能表现。我参考了扩展车辆信道模型EVA的功率时延谱参数但为了突出OTFS在稀疏信道下的优势将路径数设置为P6。每一条路径的时延按照指数衰减的功率分布设定多普勒频移则根据最大多普勒频移f_max v·fc/c计算并乘以一个随机的方向因子。这里有一个非常关键的细节多普勒频移和时延值必须以网格分辨率为单位做归一化。具体公式如下l_i τ_i · MΔf时延抽头索引 k_i ν_i · NT多普勒抽头索引当l_i和k_i恰好是整数时信道的DD域表示是最稀疏的每条径只占据一个资源格但实际信道中几乎没有这么理想的情况时延和多普勒偏移通常是非整数倍的这时一条径的能量会弥散到周围的多个格点上导致信道矩阵不再完美稀疏。这个现象在文献里叫作能量泄漏energy leakage而恰恰是OTFS均衡器设计时需要重点关注的问题。我在实现中选择将时延值固定为整数倍网格通过调整采样时钟对齐但多普勒频移保留小数部分。这么做的理由是时延可以通过接收端的定时同步大致对齐而多普勒频移则难以精确预补偿保留小数多普勒能更真实地反映实际场景。3.3 信道矩阵的生成与稀疏性分析当DD域信道系数确定之后下一步是在时频域生成等效信道矩阵。这里我采用的方法是先在时延-多普勒域构建一个P×1的路径参数数组然后利用二维DFT的性质将DD域信道映射到时间-频率域。MATLAB代码示意如下% 参数定义 M 128; N 32; P 6; delay_taps [0 1 2 4 7 10]; % 时延抽头整数倍 doppler_taps [-0.09 -0.05 0 0.03 0.06 0.08]; % 多普勒归一化含小数 path_gains sqrt(1/2) * (randn(1,P) 1i*randn(1,P)); % 复高斯增益 % 构建DD域信道矩阵M×N H_DD zeros(M, N); for p 1:P l delay_taps(p) 1; % 时延索引映射到矩阵行 k doppler_taps(p); % 多普勒索引映射到矩阵列 % 将能量分配到相邻的多普勒格点上线性插值 k0 floor(k) 1; k1 k0 1; alpha k - floor(k); if k0 1 k0 N H_DD(l, k0) H_DD(l, k0) path_gains(p) * (1 - alpha); end if k1 1 k1 N H_DD(l, k1) H_DD(l, k1) path_gains(p) * alpha; end end这段代码做了几个关键处理第一是路径增益使用复高斯随机变量模拟瑞利衰落第二是针对小数多普勒采取了相邻格点线性插值的方式分配能量避免能量突变第三是对时延轴做了整数化假设。运行后可以通过nnz(H_DD)函数查看信道矩阵的非零元素数量替代稀疏度指标。我实测下来在P6、含小数多普勒的配置下非零元素大约占矩阵总元素数的2.4%稀疏性依然非常可观。3.4 时延和多普勒分辨率的相互制约与实际取值经验关于网格参数我在这里补充一些踩坑经验。很多初学者会下意识地认为M和N取值越大越好分辨率越高信道估计越准但实际上M和N同时受两个条件约束一是MΔf不能超过信道相关带宽的倒数否则频率选择性过强导致同一格内信道变化明显二是NT不能超过信道相关时间的倒数否则帧内信道近似时不变的前提就不成立。具体到这个项目里MΔf 128 × 15kHz 1.92MHz对应的时延分辨率约为0.52μs对于典型的城区信道最大时延扩展5μs来说能分辨约10个抽头够用。NT 32 × (1/15kHz) ≈ 2.13ms在500km/h、4GHz载波下信道相干时间约为0.1ms量级这意味着一个OTFS帧内信道已经发生了显著变化——这就是为什么DD域均衡不能简单地基于“帧内信道恒定”的假设而需要利用DD域信道的稀疏性而非时不变性来做文章。一个比较实用的经验法则是归一化多普勒ν_max最好控制在0.05~0.15之间太小则OTFS的优势不明显OFDM也能应付太大则需要更高复杂度的均衡算法来消除严重的多普勒间干扰。4. 均衡算法实现从匹配滤波到MMSE再到低复杂度近似4.1 接收端信号模型与DD域输入输出关系在接收端经过OFDM解调和Wigner变换之后我们得到的是时延-多普勒域的接收符号矩阵Y_DD它和发送符号矩阵X_DD之间的关系可以写成Y_DD H_eff · X_DD Z这里的H_eff是一个MN×MN的等效信道矩阵Z是加性高斯白噪声。直接把H_eff看作MN维的大矩阵那么均衡问题就变成了一个标准的多输入多输出检测问题。但MN动辄几千直接做矩阵求逆的复杂度是O((MN)³)完全不可接受。这就是均衡算法研究的主要驱动力的来源。4.2 匹配滤波MF与迫零ZF均衡的实现与性能边界最简单的均衡方式是匹配滤波即用H_eff的共轭转置乘以接收向量。MF在单径信道下是最优的但在多径干扰存在的情况下它完全不考虑干扰抑制因此性能很差。我测试的MF均衡在16-QAM、EVA信道下的BER大约只能到10⁻²量级作为参考基准可以实用意义不大。ZF均衡则是直接做H_eff的伪逆X_hat (H_eff^H · H_eff)⁻¹ · H_eff^H · Y。它能够完全消除多径干扰代价是噪声增强。当H_eff的奇异值分布较分散时ZF的性能会大幅劣化。在DD域信道中因为H_eff本身具有循环结构的近似特性ZF的复杂度可以通过FFT降低但依然存在数值不稳定和噪声增强的问题。% ZF均衡实现基于显式矩阵求逆 H_eff construct_effective_channel(H_DD, M, N); % 构造等效信道矩阵 Y_vec reshape(Y_DD, [M*N, 1]); X_hat_vec (H_eff * H_eff 1e-10 * eye(M*N)) \ (H_eff * Y_vec); X_hat reshape(X_hat_vec, [M, N]);这里加了一个1e-10的正则项避免矩阵奇异实际中可以根据噪声方差调整。这种暴力求逆的方式在MN4096时MATLAB跑一次大约需要几十秒速度非常感人只适合作为性能上界参考。4.3 LMMSE均衡的原理、导数推导与实现在ZF和MF之间取折中就是LMMSE均衡。其解为X_hat (H_eff^H · H_eff σ²_z / σ²_x · I)⁻¹ · H_eff^H · Y其中σ²_z和σ²_x分别是噪声和发送符号的方差。从公式上看LMMSE只是比ZF多了一个正则项但这个正则项的作用非常大当噪声方差大时它抑制噪声放大当信道条件好时它自动退化为ZF。LMMSE在我的仿真中比ZF有大约2~3dB的性能增益在16-QAM下BER达到10⁻⁴所需的SNR比ZF低了约4dB。关于LMMSE实现有一个关键问题是NMSE噪声方差估计。我建议直接利用接收信号中的空载波或导频符号来估计噪声功率而不是用理论值因为理论噪声功率往往忽略了收发机本身的非理想因素。最简单的做法如下% 噪声方差估计基于空载波位置的接收能量 noise_power mean(abs(Y_DD(empty_indices)).^2); snr_inv noise_power / mean(abs(X_DD(pilot_indices)).^2); X_hat (H_eff * H_eff snr_inv * eye(M*N)) \ (H_eff * Y_vec);这个做法在信噪比高于15dB时噪声方差估计的偏差很小不会对均衡性能造成可感知的影响。4.4 基于消息传递MP的低复杂度均衡算法实现显式矩阵求逆的LMMSE在MN4096时已经慢到没法用于迭代仿真更别说后续要跑完整的BER蒙特卡洛循环了。这时候轮到消息传递Message Passing, MP算法登场。MP算法利用DD域信道的稀疏性和H_eff的特定结构将检测问题转化为因子图上的迭代消息更新问题避开了显式矩阵求逆。MP算法的核心原理是每个发送符号节点x_j其接收观测y_i满足y_i h_ij·x_j Σ(k≠j) h_ik·x_k z。把其他符号的干扰视作高斯噪声就可以在每次迭代中根据当前估计的干扰均值和方差计算出符号节点向观测节点传递的消息。我实现的MP均衡器基于经典的Gaussian-approximated MP框架关键代码如下function X_hat mp_equalizer(Y_vec, H_eff, sigma2, num_iters, M, N) % 初始化 mn M*N; x_hat zeros(mn, 1); tau ones(mn, 1); % 符号方差估计 % 预提取H_eff中每个观测节点的非零系数索引稀疏存储 H_sparse sparse(H_eff); [row_idx, col_idx, h_vals] find(H_sparse); % 按行分组加速迭代 row_groups cell(mn, 1); for i 1:mn mask (row_idx i); row_groups{i} [col_idx(mask), h_vals(mask)]; end for iter 1:num_iters % 观测节点更新计算外部均值和方差 for i 1:mn nodes row_groups{i}; if isempty(nodes), continue; end % 均值 (干扰项) inter_mean nodes(:,2). * x_hat(nodes(:,1)); % 方差 inter_var sum(abs(nodes(:,2)).^2 .* tau(nodes(:,1))) sigma2; % 更新外部信息省略详细公式按标准高斯近似MP实现 end % 符号节点更新结合QAM星座先验重新估计符号均值和方差 for j 1:mn % 基于外部信息和星座点先验做最小均方误差估计 % 具体实现需结合QAM星座映射和软解映射 end end endMP算法的复杂度主要取决于H_eff中非零元素的数量和迭代次数。我实测在P6、MN4096、迭代5次的配置下单次均衡耗时约50ms相比显式LMMSE提升了近千倍而BER性能损失只有约0.5~1dB。这个性能与复杂度的折中使得MP算法成为工程落地中最受欢迎的OTFS均衡方案。4.5 三种均衡算法性能与复杂度对比实测我将MF、ZF、LMMSE和MP三种算法在相同信道和信噪比条件下做了对比结果整理如下算法实现复杂度16-QAM BER10⁻³所需SNR单帧均衡耗时MN4096MFO(MN)无法到达约5msZFO((MN)³)约22dB约40sLMMSEO((MN)³)约19dB约35sMPO(迭代次数×非零元素数)约20dB约50ms从表中能看到MP以较小的性能代价换取了数量级的复杂度降低这种特性在端到端系统级仿真中几乎是必须的——我用MP替代LMMSE之后跑一组完整BER曲线的时间从原来的一个多小时缩短到了十分钟以内。对于需要频繁调参的研发阶段来说这个效率提升意义重大。5. 完整仿真链路搭建与工程实战要点5.1 从发端符号映射到收端解调的完整信号流整个OTFS收发链路的信号流程为QAM符号映射 → SFFT二维傅里叶变换即ISFFT的逆操作→ 海森堡变换OFDM调制 → 信道 → Wigner变换OFDM解调 → SFFT → 均衡 → QAM解映射。在MATLAB实现中最关键的两个变换函数如下。ISFFT和SFFT本质上是二维DFT/IDFT可以直接用MATLAB的fft2和ifft2函数实现但需要注意归一化因子和维度排列% 发送端DD域 - 时频域ISFFT X_TF fft2(X_DD) / sqrt(M*N); % 注意维度M是频域维度N是时域维度 % 海森堡变换并行OFDM调制对每一列做IFFT X_time ifft(X_TF, M, 1); % 加CP和并串转换...这里有一个MATLAB实现中容易忽略的坑fft2的方向。DD域矩阵的行索引对应时延轴列索引对应多普勒轴。FFT之后行方向对应频率轴列方向对应时间轴。如果维度搞反了整个链路会静默失败表现为BER永远停留在0.5附近而且很难排查。5.2 收发端滤波器设计矩形窗与升余弦窗的选择OTFS对脉冲成形滤波器的选择非常敏感。理想的DD域正交性要求收发端的波形函数满足双正交条件但这在工程中只能近似实现。我在项目中对比了矩形窗和升余弦窗两种方案。矩形窗实现最简单在时频域相当于理想带限滤波但它的频谱旁瓣衰减差多普勒域的能量泄漏比较严重。升余弦窗的滚降系数β通常取0.1~0.5β越大旁瓣越低但会牺牲频谱效率。实测下来在归一化多普勒为0.1的场景下β0.2的升余弦窗相比矩形窗能带来约1.5dB的性能提升代价是约20%的带宽开销是否值得要看你场景中频谱资源是否紧张。5.3 导频图案设计与信道估计误差对BER的影响本项目中把信道假设为接收端完全已知但在实际系统中必须通过导频估计信道。OTFS的导频设计有个经典方案在DD域放置一个脉冲导频并在周围留出保护间隔业内习惯叫作嵌入式导频embedded pilot。我实现了一个简化版本在DD域网格的某个位置放置一个能量为E_p的导频符号周围在时延轴保护L_p个格、多普勒轴保护2K_p1个格保护间隔内的符号置零其他位置放置数据符号。接收端在DD域通过检测峰值能量来估计信道。导频功率E_p和数据功率E_d的比值选择会影响估计精度和数据检测性能导频功率太大数据SNR下降且峰均比升高导频功率太小信道估计噪声大。我在E_p/E_d3dB的配置下测过相比理想信道估计有约2dB性能损失提升到6dB后损失降至1dB以内。但导频功率也不是越大越好它会导致功放非线性失真。工程上建议在系统级仿真中把功放非线性也纳入建模否则实验室性能和实际部署性能可能差出好几个dB。5.4 蒙特卡洛仿真框架与计算效率优化技巧最后说一下蒙特卡洛仿真的工程实现。OTFS的每个SNR点需要跑几千帧才能得到平滑的BER曲线如果每帧都从头构造H_eff并做均衡计算量会非常可观。我做了三方面的优化第一预生成信道参数。不同帧之间的信道变化主要体现在路径增益的随机变化上时延和多普勒偏移可以在仿真开始前一次性生成并复用这样可以省掉大量重复的信道矩阵构造时间。第二H_eff稀疏化存储。直接用稀疏矩阵存储H_eff并预先按行分组提取索引这样在MP迭代时不需要反复访问大型稠密矩阵。第三并行化SNR点。MATLAB的parfor可以将不同SNR点的仿真分配到多个工作线程上实测四核并行下整体仿真时间减少约60%。parfor snr_idx 1:length(SNR_dB_list) ber_sum 0; for frame 1:NumFrames % 蒙特卡洛仿真帧 [ber_frame] simulate_otfs_frame(snr_dB, params); ber_sum ber_sum ber_frame; end BER(snr_idx) ber_sum / NumFrames; end6. 仿真中的典型问题与调试实录6.1 星座图整体旋转FFT方向与归一化因子错误这个问题是我第一次跑完整链路时遇到的均衡后的星座图整体出现约45度旋转而且随着SNR提高旋转角度并不改变。检查了半天最后定位到ISFFT和SFFT的归一化系数不一致。ISFFT用1/sqrt(MN)而SFFT如果用了sqrt(MN)的归一化那么二者级联后会引入一个额外的MN因子导致信号幅度出现系统性变化。在QAM解映射时星座点就会整体偏移看起来就像旋转了一样。解决办法是在代码中严格标注两个变换的归一化因子并且写一个单元测试发送恒定幅度的符号检查均衡后星座点的幅度是否恢复到发送值。我强烈建议每个OTFS仿真工程都加这个单元测试它能在几分钟内帮你排除掉一大类系数错误。6.2 低信噪比下BER出现地板效应噪声方差估计偏差过大另一个典型问题是在低SNR区间BER曲线下降缓慢出现地板。我排查后发现是噪声方差估计出了问题——当初直接用理论噪声功率代替估计值但仿真中信道的大多普勒偏移导致一部分信号能量泄漏到保护间隔这部分泄漏能量被误判为噪声信噪比越低这个偏差占比越大。解决方法是改为基于空载波估计噪声功率并且将保护间隔内的能量也纳入噪声统计。这样虽然会略微高估噪声因为保护间隔里实际上还有泄漏信号但相比噪声低估导致的均衡过度正则化整体BER性能反而更好。6.3 MP算法不收敛消息更新顺序与阻尼因子的作用MP算法在某些信道实现下会出现不收敛或者收敛到错误解的情况特别是在高多普勒场景。我在调试中发现MP的收敛性和消息更新的顺序有关如果按照自然顺序逐个更新节点某些长反馈回路会导致振荡。解决方式是引入阻尼因子damping factor即每次更新后的新估计值是本次计算值和上一次值的加权和x_new (1 - δ)·x_old δ·x_calcδ通常取0.2~0.5。阻尼因子越大收敛越快但稳定性越差越小越稳定但需要更多迭代次数。我最终选了δ0.3在5次迭代内能达到稳定。这个调试经验在文献中不太被提及但对实际实现至关重要。6.4 性能对比基准不统一OFDM与OTFS的频谱效率对齐最后一个容易被忽略但非常影响结果可信度的问题是对比OTFS和OFDM时必须保证二者频谱效率一致。OTFS因为需要导频和保护间隔实际频谱效率是N×M减去保护开销后的值除以总时长带宽。而OFDM通常用所有子载波传数据。如果直接对比两个系统在相同发射功率和相同带宽下的BEROTFS的数据子载波数少功率密度高不公平。我的做法是让OTFS的有效数据符号数等于OFDM的子载波数乘以符号数通过调整调制阶数来平衡。比如OTFS用16-QAM而OFDM用64-QAM使得二者在每个资源块上的比特数相同再对比BER相对SNR的曲线。这样得到的结论才是工程上有意义的。7. 写在最后我对OTFS均衡实现的一些体会这个项目做下来最大的感受是OTFS的“盛名之下其实难副”还是“实至名归”完全取决于你站在什么位置看。如果你只盯着AWGN下的频谱效率OTFS和OFDM的差距微乎其微但一旦把场景切换到高铁、无人机、低轨卫星这类高多普勒环境OTFS在DD域处理信道的思路确实是从根上解决了问题而不是打补丁。关于均衡算法我的建议是如果你的目标是论文验证LMMSE足够且有理论支撑如果你要做系统级仿真或者硬件原型MP算法几乎是必须的选择它的性能损失可控但计算效率的提升是数量级的。还有一点是信道建模的精细程度直接影响算法对比结论的可靠性如果你把多普勒频移都取整成整数格那么你等于给自己降低难度最终得到的结论会偏乐观很难反映算法在真实场景中的表现。如果后续你还想继续深入这个方向我的建议是往两个方向延伸一是把信道估计和均衡算法联合优化目前大多工作假设信道已知但导频辅助的信道估计误差会改变均衡器的性能边界二是探索基于深度学习的DD域信道估计与检测方案这也是这个方向最活跃的研究分支之一。我希望本文的内容能帮你少走一些弯路把精力花在真正值得研究的算法问题上。