资讯动态

MVDR与MMSE波束形成原理、MATLAB实现及工程避坑指南

发布时间:2026/10/13 14:53:52 来源:尧图企业网站定制
简介这套资源是一份基于MMSE与MVDR准则的自适应波束形成MATLAB源码包面向无线通信、声学信号处理等领域的研究者与工程师用于解决多干扰抑制、期望信号增强及最优权值求解等问题。压缩包仅含7个m文件大小约3KB小巧精炼其中run_lms_mvdr.m为主运行脚本lms.m实现LMS自适应迭代batch.m用于批量处理plot系列脚本负责绘制波束图与误差性能make_rp.m用于生成参考信号。代码结构清晰配套了从算法实现到结果可视化的完整链路便于读者修改参数、替换信号模型并验证不同场景下的波束形成效果。已有448人学习下载适合作为理解MVDR与MMSE关联、并在此基础上扩展算法的入门工具。1. 从“MVDR_MMSE.rar”这个包看波束形成它到底是什么值得跑一遍吗如果你在某个阵列信号处理的资源包里翻到过 MVDR_MMSE.rar大概率里面就是两种自适应波束形成器的示例代码MVDR最小方差无失真响应和 MMSE最小均方误差。它们做的事情相同——用一组麦克风或天线阵元接收的空间信号通过加权合成把期望方向的声音或信号保下来同时把干扰方向压下去。但两者的核心逻辑完全不同MVDR 只看阵列输出的统计特性MMSE 则需要一段参考信号来“告诉”系统期望信号长什么样。对刚接触自适应波束形成的工程师来说这个包的价值在于用最小可运行代码把两种算法的差距摆到桌面上。这篇笔记就按这个思路从公式到 MATLAB 实现把参数设置和常见坑一次讲清。适合正在做麦克风阵列、雷达或通信抗干扰的读者。2. MVDR 与 MMSE 波束形成的核心差异先听懂公式再调参2.1 MVDR在无失真约束下最小化输出功率自适应波束形成的输入是 M 个阵元的复基带快拍数据 x(n) [x1(n), ..., xM(n)]^T输出 y(n) w^H x(n)。MVDR 要求解这样一个约束优化问题在期望方向增益恒为 1 的前提下让输出信号的总功率最小。数学上写成 min_w w^H R ws.t. w^H a(θs)1。解是 w R^{-1} a(θs) / [a(θs)^H R^{-1} a(θs)]。这个解用拉格朗日乘子法即可得到。理解它不需要深奥的优化背景关键点在于期望方向被约束为 1那么输出功率里来自该方向的信号分量是固定的剩下的功率全部来自干扰和噪声最小化输出功率就是在不损失期望信号的条件下尽量压低干扰和噪声。这个算法叫做“最小方差”因为输出功率就是输出信号的方差叫做“无失真响应”因为约束保证了期望方向增益为 1。在理想协方差矩阵下MVDR 等价于最大输出信干噪比波束形成器所以它是自适应波束形成里的基准算法。但在工程中R 只能通过有限快拍估计这就带来了误差。尤其当期望信号本身功率较大、快拍数又不足时采样协方差矩阵里已经包含了期望信号的分量MVDR 的最小化操作会把期望方向附近的“功率”也当作干扰来抑制导致期望信号方向出现零陷这就是著名的“信号自消”。后面第 4 章我们会专门讨论快拍数的取值。MVDR 实现时还有一个容易被忽略的细节导向矢量 a(θs) 的相位基准。如果阵元坐标从 0 开始取第一个阵元为参考那么均匀线阵的导向矢量是 a(θ) [1, e^{j 2π d/λ sinθ}, ..., e^{j 2π (M-1)d/λ sinθ}]^T。如果参考点不在第一个阵元公式里会多一个公共相位虽然最终方向图幅度不变但如果你直接照搬公式并且比较不同算法给出的权向量会发现 MVDR 权向量的相位被整体旋转。这本身不影响波束方向图却会影响后续做多通道合并或与接收机时钟对齐。我的习惯是固定用阵元 0 做参考并且在代码里把导向矢量写成匿名函数避免每次重复复制粘贴。2.2 MMSE以期望信号为参考的最小均方误差MMSE 波束形成不考虑方向约束它直接给定一个参考信号 d(n)然后寻找权向量使输出 y(n) w^H x(n) 与 d(n) 的均方误差最小min_w E[|w^H x - d|^2]。展开后得到代价函数 w^H R w - w^H r_xd - r_xd^H w E[|d|^2]对 w 求梯度令其为零得到维纳解 w R^{-1} r_xd其中 r_xd E[x(n) d*(n)]。如果参考信号就是真实的期望信号 s(n)那么 r_xd 就等于 σ_s^2 a(θs)代入后权向量方向与 MVDR 类似但幅度会包含对参考信号功率的匹配。实际中 r_xd 是用样本平均估计的所以 MMSE 不显式依赖导向矢量而是通过参考信号与数据的相关性隐式感知来波方向。MMSE 的最大优势是有参考信号“拽着”。当协方差矩阵估计有误差时只要参考信号比干扰信号干净权向量就不容易塌到把所有信号都消掉。这也让它非常适合通信接收机前导码、导频序列、甚至解调后的判决符号都可以充当参考。代价也在这里参考不干净比如导频与本地时钟有频偏、相位抖动、或者多径导致副本与期望信号不再同相那么 MMSE 的权向量会渐渐偏向参考信号中携带的错误方向。对比之下MVDR 只要导向矢量正确就完全不依赖参考波形。所以在做被动监听或测向时多半选 MVDR而在有训练序列的通信链路里 MMSE 往往更实用。2.3 导向矢量与协方差矩阵决定两种算法行为的两个输入MVDR 和 MMSE 的公式里都出现 R但 MVDR 多一个导向矢量 a(θs)MMSE 多一个互相关向量 r_xd。这两个量是怎么来的决定了你后面代码里 90% 的坑。R 的实际估计方式是 R_hat (1/N) Σ_{n1}^N x(n) x^H(n)。注意这个估计是 Hermitian 矩阵但只有 N≥M 时满秩。当 N 小于 M 时 R_hat 奇异连求逆都做不了当 N 只是略大于 M 时R_hat 的最小特征值严重偏向零导致 R^{-1} 变得很大权向量模值暴涨。这个现象在代码里表现为波束方向图出现极高的旁瓣输出噪声被放大。对应措施通常是对角加载或者使用空间平滑/子空间投影。具体怎么加看第 4 章。r_xd 的估计是 r_hat (1/N) Σ_{n1}^N x(n) d*(n)。如果参考信号 d(n) 只含期望信号不含干扰那么 r_hat 会收敛到与导向矢量成比例的量MMSE 权向量自然指向期望方向。但如果参考信号里混入了干扰分量比如通信系统的导频被对端干扰信号污染r_hat 就会同时包含干扰方向的成分权向量在干扰方向也会形成增益。这就是为什么 MMSE 对参考信号纯度要求高。另一个容易忽略的问题是时延对齐x(n) 和 d(n) 必须时间对齐差一个采样点r_hat 的相位就会整体旋转直接破坏权向量的相位。我在调试代码时如果发现 MMSE 输出信干噪比异常第一件事就是看参考信号是否与期望信号逐点同步。3. 在 MATLAB 中跑通 MVDR 和 MMSE 自适应波束形成从快拍数据到方向图3.1 阵列模型与数据生成先造一个线阵仿真环境先写一段 MATLAB 代码生成接收数据。这里使用 8 阵元均匀线阵阵元间距为半波长期望信号在 30 度干扰在 -20 度。信号、干扰和噪声都用复高斯随机过程模拟因为基带 IQ 信号通常就是这样的复包络。% 均匀线阵参数 M 8; % 阵元数 d_lambda 0.5; % 阵元间距除以波长半波长配置可避免栅瓣 theta_s 30; % 期望信号方向单位度 theta_i -20; % 干扰方向单位度 SNR_dB 10; % 期望信号信噪比 INR_dB 20; % 干扰噪比 N 1000; % 快拍数 % 导向矢量函数角度转弧度参考点在第一个阵元 steer (theta) exp(1j*2*pi*d_lambda*sin(theta*pi/180)*(0:M-1).); % 功率缩放系数 amp_s sqrt(10^(SNR_dB/10)); amp_i sqrt(10^(INR_dB/10)); % 期望信号、干扰和噪声均为复高斯随机过程 s amp_s * (randn(1,N) 1j*randn(1,N))/sqrt(2); i amp_i * (randn(1,N) 1j*randn(1,N))/sqrt(2); n (randn(M,N) 1j*randn(M,N))/sqrt(2); % 合成接收数据每列是一个快拍 as steer(theta_s); ai steer(theta_i); X as*s ai*i n;这段代码里steer返回 M×1 导向矢量s是 1×N 的期望信号波形X是 M×N 的数据矩阵即每个阵元 N 个快拍。sqrt(10^(SNR_dB/10))用来把 SNR 从 dB 换算成幅度比例复高斯序列除以sqrt(2)是让实部虚部总功率为 1。如果你实际用麦克风阵列数据这里的X应该换成真实采集信号但模型要额外考虑房间冲激响应和噪声相关性仿真阶段先用这个白噪声线阵模型验证算法正确性。3.2 用 MVDR 求最优权向量核心三行代码采样协方差矩阵可以直接用矩阵乘法算R X*X/N。然后 MVDR 权向量就是对 R 做一次求逆再做一次二次型归一化。MATLAB 里用反斜杠\代替显式inv数值上更稳也更接近解线性方程组的本质。% 采样协方差矩阵 R (X * X) / N; % MVDR 权向量先算 R\as再归一化 w_mvdr (R \ as) / (as * (R \ as)); % 检查权向量模值若数值达到1e6量级说明协方差矩阵接近奇异 fprintf(||w_mvdr|| %.2f\n, norm(w_mvdr));R \ as实际是在计算 R^{-1} as但没有真正生成逆矩阵。分母as*(R\as)是一个复标量能确保w_mvdr*as 1。这个归一化是 MVDR 的“无失真”约束代码里最好打印一下w_mvdr*as确认它是不是 1注意浮点误差通常接近 1。如果norm(w_mvdr)非常大说明 R 病态后面第 5 章会讲怎么处理。3.3 用 MMSE 求权向量需要一段参考信号MMSE 不需要显式导向矢量但需要参考信号 d_ref。仿真中可以直接拿期望信号 s 当参考因为这样功率和相位完全对齐能得到理论最优的 MMSE 权向量。实际使用中参考信号来自导频或训练序列。% MMSE 需要参考信号。仿真中直接取真实期望信号 s 作为参考 d_ref s; % 接收数据与参考信号的互相关向量 r_xd (X * d_ref) / N; % MMSE 权向量 w_mmse R \ r_xd;这里X * d_ref是 M×N 矩阵乘以 N×1 向量结果 M×1除以 N 后就是互相关向量 r_xd 的样本估计。注意 MMSE 权向量没有归一化约束它的幅度取决于参考信号功率和协方差矩阵。如果你评估输出 SINR这个幅度不影响因为分子分母里的权向量会同时缩放但如果你观察时域波形可能需要额外做幅度校准。3.4 计算波束方向图与输出信干噪比方向图就是把权向量和各个方向导向矢量的匹配增益画出来。这里注意将两个方向图都归一化到最大值方便对比零陷位置。% 计算方向图 theta_scan -90:0.1:90; P_mvdr zeros(size(theta_scan)); P_mmse zeros(size(theta_scan)); for k 1:numel(theta_scan) a steer(theta_scan(k)); P_mvdr(k) abs(w_mvdr * a)^2; P_mmse(k) abs(w_mmse * a)^2; end % 绘制方向图归一化到0 dB figure; plot(theta_scan, 20*log10(P_mvdr/max(P_mvdr)), LineWidth, 1.5); hold on; plot(theta_scan, 20*log10(P_mmse/max(P_mmse)), --, LineWidth, 1.5); grid on; xlabel(角度 (度)); ylabel(归一化增益 (dB)); legend(MVDR, MMSE); % 输出信干噪比用真实协方差计算评估权向量质量 Rs amp_s^2 * (as*as); Ri_n amp_i^2 * (ai*ai) eye(M); sinr_mvdr (w_mvdr * Rs * w_mvdr) / (w_mvdr * Ri_n * w_mvdr); sinr_mmse (w_mmse * Rs * w_mmse) / (w_mmse * Ri_n * w_mmse); fprintf(MVDR SINR %.2f dB\n, 10*log10(real(sinr_mvdr))); fprintf(MMSE SINR %.2f dB\n, 10*log10(real(sinr_mmse)));SINR 计算时用的Rs和Ri_n是真实协方差不是采样协方差。这样做是把“权向量计算”和“权向量评估”分开避免用同一批数据既估计权向量又评估性能而得到过于乐观的结果。正常仿真中MVDR 的 SINR 应接近理论最优值 10log10(1SNRINR) 不对理论最优 SINR 取决于干扰抑制能力你主要看两个算法随参数变化的趋势即可。方向图上MVDR 和 MMSE 都应在 -20 度附近形成零陷在 30 度附近保持增益。如果你看到期望方向塌陷基本就是快拍数不够或 R 病态。4. 参数怎么设快拍数、对角加载、参考信号长度对结果的影响4.1 快拍数不够时 MVDR 为什么会“信号自消”MVDR 对采样协方差矩阵的误差非常敏感。当快拍数 N 远大于阵元数 M 时R_hat 收敛到真实 RMVDR 表现很好。但当 N 只有几十时R_hat 的最小特征值严重偏小逆矩阵被不存在的“小奇异方向”主导。更糟的是期望信号本身也贡献了协方差矩阵的一部分MVDR 在求逆过程中会把“含期望信号功率的 R 逆”作用到导向矢量上导致权向量在期望方向形成虚假零陷。用一个扫描快拍数的实验可以直观看到这个现象% 沿用前面的 as、ai、amp_s、amp_i 等变量 N_set [20, 50, 200, 1000]; sinr_mvdr_arr zeros(size(N_set)); for k 1:numel(N_set) N N_set(k); s_t amp_s * (randn(1,N) 1j*randn(1,N))/sqrt(2); i_t amp_i * (randn(1,N) 1j*randn(1,N))/sqrt(2); n_t (randn(M,N) 1j*randn(M,N))/sqrt(2); X as*s_t ai*i_t n_t; R (X*X)/N; w (R\as)/(as*(R\as)); Rs amp_s^2 * (as*as); Ri_n amp_i^2*(ai*ai) eye(M); sinr real(w*Rs*w / (w*Ri_n*w)); sinr_mvdr_arr(k) 10*log10(sinr); end这段代码对每个 N 重新生成数据避免用同一批数据反复截断产生虚假相关。结果趋势是N20 时 SINR 很可能低于 0dBN1000 时接近理论最优。如果 N20 时 SINR 反而很高说明随机种子刚好碰到了一个“好”样本这是小样本的偶然性。所以工程上评估算法不要做单次实验至少做 100 次蒙特卡洛取平均。一个常见的错误是快拍数不够时有人直接用pinv(R)代替inv(R)强行求逆。这确实能避免报错但会引入最小范数解方向图看起来“很漂亮”实际 SINR 并没有提升。问题的根源不是求逆方法而是对协方差矩阵的估计太差需要用对角加载或子空间方法改善估计而不是用伪逆糊弄过去。4.2 对角加载系数数值稳定与噪声放大的折中对角加载是在采样协方差矩阵上加一个很小的单位矩阵倍数让 R_ld R λ*I。原理是R 的小特征值本来因为快拍有限被低估加上 λ 后相当于给所有特征值设了一个下限逆矩阵的小特征值倒数不再爆炸权向量模值被控制住。但 λ 不能太大否则 R 的对角占优权向量退化为常规延迟相加波束形成干扰零陷变浅。% 对角加载系数常见取 trace(R)/M 的千分之一到百分之一 lambda_ld 0.001 * trace(R) / M; R_ld R lambda_ld * eye(M); w_mvdr_ld (R_ld \ as) / (as * (R_ld \ as));实际调试时我会先打印trace(R)/M它约等于总接收功率。如果噪声功率已知也可以取噪声功率的 10 倍作为加载值比如 λ10*sigma_n^2。注意这里的噪声功率是每个阵元的基底噪声功率。加载后的 MVDR 在期望方向增益仍然为 1但方向图上的旁瓣会高于不加装载的情况这是用少量旁瓣抬高换稳定性。如果 λ 取到trace(R)/M的量级干扰零陷就基本消失了所以一般从 1e-3 倍开始试逐渐增大到不能接受的方向图畸变为止。4.3 MMSE 参考信号的选择导频序列还是判决反馈MMSE 对参考信号的依赖比很多人想象的大。仿真里直接拿 s 当参考是最理想的情况但工程里 s 不可能完整已知。通信系统通常用导频序列接收端本地生成与发送端一致的导频符号通过相关处理对齐时序和相位。需要注意的是导频序列如果长度太短互相关估计 r_xd 的方差会很大导致 MMSE 权向量波动剧烈。实际接收机里导频符号在解调前已经经过信道接收到的导频是畸变过的。如果你直接把本地导频当参考不去做信道相位校正MMSE 权向量会按参考信号与接收信号的相关性“错位”收敛结果可能是把期望信号当成干扰压掉。所以 MMSE 的参考信号在使用前至少要完成以下检查时延是否对齐、相位是否旋转、有没有频偏。如果这些都排查过可以用判决反馈先用导频算出初始权向量解调一段数据后用判决结果替换参考信号再递归更新权向量。这算是 MMSE 的自适应变体适合信道慢变场景。% 生成本地导频序列作为参考信号 pilot sign(randn(1,N)) 0j; % BPSK导频与s不是同一段数据 d_ref pilot; r_xd (X * d_ref) / N; w_mmse_pilot R \ r_xd;注意这里pilot和s是不相关的所以r_xd不会包含期望信号分量方向图会在期望方向形成随机增益。这验证了一个结论MMSE 必须用与期望信号相关的参考否则它只是在“最小化输出和无关参考的误差”没有任何空间滤波意义。4.4 不同 SNR 和干扰角度下的性能对比表拿不同场景做一版定性对比可以让新手快速选择算法起点。下面是固定快拍数充足、干扰功率高于信号时的典型表现场景MVDR无加载MVDR对角加载MMSE参考干净高SNR、快拍充足输出SINR最优零陷深零陷略浅但更稳与MVDR接近低SNR、快拍充足零陷明显变浅零陷略好参考含噪时劣化高SNR、快拍不足信号自消方向图畸变仍有可用输出受参考相位影响低SNR、快拍不足权向量模值大噪声放大最稳健需要参考质量高这个表排除了一些极端条件比如干扰与期望信号角度太近比如小于一个波束宽度那种情况下两种算法都很难完全抑制干扰。表中“参考干净”指的是参考信号与期望信号同相且不含干扰只有白噪声扰动。如果你要做系统选型我一般建议硬件条件好、有训练序列的通信链路选 MMSE因为它对协方差估计误差不敏感纯空间滤波、没有参考信号的场景选对角加载 MVDR它是最不依赖外部信息的方案。5. 避坑指南MVDR/MMSE 波束形成代码里最常见的 5 个翻车现场5.1 协方差矩阵求逆报错或出现奇异矩阵现象MATLAB 报 “Matrix is singular” 或者警告 “Matrix is close to singular”代码运行中断或算出 Inf/NaN。原因快拍数 N 小于阵元数 M导致采样协方差矩阵秩不足或者数据里有常数偏移比如 ADC 直流偏置使矩阵不满秩也有可能是数据里存在 NaN污染了协方差估计。解决先检查size(X,2)是否大于等于size(X,1)。如果小于要么增大快拍数要么用对角加载。临时救急可以写R_ld R 1e-9 * trace(R)/M * eye(M)但这是治标根因是数据长度不足。如果数据里有直流分量先做去均值X X - mean(X,2)。5.2 导向矢量方向搞错导致期望信号被抑制现象波束方向图在期望信号方向出现零陷MVDR 输出几乎为零但方向图在其他方向可能正常。原因角度单位混用。比如sin(theta)没有转弧度或者阵元间距写成整数波长导致栅瓣或者导向矢量里用cos代替sin。另一个常见原因是扫描方向的角度定义与实际来波方向差 90 度比如用阵列法向为 0 度还是端射方向为 0 度。解决写一个自检打印w_mvdr*steer(theta_s)MVDR 理应等于 1。如果等于 0说明导向矢量方向与权向量约束方向不一致。再看as*as是否为 M如果不是说明导向矢量表达式本身有问题。这些检查能在画方向图之前就定位错误。5.3 MMSE 参考信号与期望信号相位不对齐权向量收敛到错误解现象MMSE 输出 SINR 很低但方向图看期望方向增益并不低甚至干扰方向也有增益。原因参考信号与接收数据之间的时延差或载波相位差导致互相关向量 r_xd 被乘了一个复指数这个相位误差会让权向量在期望方向上的响应偏离正确值。解决在仿真中先做一个无噪声测试令 X 只含期望信号参考信号取 s 的一个延迟副本观察输出是否恶化。实际系统中要做时间同步和相位同步最简单的做法是计算参考信号和第一个阵元的互相关峰值按峰值时刻对齐后再送入 MMSE。不要直接拿解调前的数据当参考除非做了信道估计校正。5.4 把采样协方差矩阵直接当理想协方差用小快拍下波束畸变现象代码在 N1000 时方向图正常换成 N100 后每次运行结果都不一样方向图零陷位置飘忽SINR 忽高忽低。原因单次采样协方差矩阵是随机矩阵小样本下估计方差极大。一些初学者的代码里把R X*X/N当成真实 R 来推导忽略了协方差估计误差对权向量的影响结果自然不稳定。解决用蒙特卡洛验证。固定参数循环 200 次每次重新生成 X统计 SINR 的分布。如果标准差超过 3dB说明这个快拍数不可靠需要增加快拍或加载。这里没有玄学小样本的协方差估计本质上就是一个高方差估计量只能靠样本数或正则化来压方差。5.5 没有做归一化方向图增益与理论值对不上现象MVDR 在期望方向增益不是 1而是 0.5 或 1.2方向图最大值出现在期望方向附近但不精确在期望方向。原因权向量没有满足w*as1。可能是代码里求 MVDR 时漏掉了分母归一化或者用错了inv和\的顺序也可能是方向图计算时权向量被后续处理比如滤波改写了。解决每次得到权向量后立刻打印w*as。如果与 1 偏差大于 1e-3检查归一化步骤。MMSE 本身不要求这个约束画方向图时应该单独归一化到最大值不要拿 MVDR 的归一化逻辑套在 MMSE 上。记住MVDR 是约束下的最优MMSE 是参考信号下的最优两者归一化判据不同。6. 让 MVDR 更稳健对角加载系数自动选择与子空间投影验证解决常规 MVDR 小快拍自消的一个可靠工程方案是对采样协方差矩阵做特征值分解把大特征值对应的特征向量方向从导向矢量中投影掉一部分再带入 MVDR 公式。这样做的目的是让权向量不再包含“期望信号本身对协方差矩阵的贡献”从源头减小自消。实现如下% 特征值分解 R找到最大特征值对应的特征向量 [U, D] eig(R); [~, idx] max(diag(D)); u U(:, idx); % 信号子空间主导方向 % 构造投影矩阵从导向矢量中剔除该方向 P_proj eye(M) - u * u; as_eff P_proj * as; % 用投影后的导向矢量计算稳健 MVDR w_robust (R \ as_eff) / (as_eff * (R \ as_eff));这里的逻辑是假设最大特征值主要由期望信号贡献把这个方向从导向矢量中剔除后MVDR 就不会“看到”期望信号功率从而避免自消。但要注意如果最大特征值其实来自强干扰这个投影会帮倒忙。所以该方法适合期望信号功率高于干扰的场景或者先用空间谱估计确认强特征值对应期望方向再用。对角加载系数的自动选择我常用的办法是做一个快扫从lambda 1e-6 * trace(R)/M开始以 10 倍步长增加对每个值计算输出 SINR用独立验证数据估计画一条曲线。找到一个“平台区”即 SINR 对加载系数不敏感的范围取平台区中间值。如果平台区很窄说明协方差矩阵估计本身不可靠需要回到数据采集环节增加快拍而不是靠调参硬撑。验证一个波束形成器是否做对了最直接的方法是看方向图的空间谱在期望方向保持增益在干扰方向形成零陷且零陷深度至少比旁瓣低 20dB。但更严格的验证是输出 SINR 的蒙特卡洛分布。我会固定阵列和角度做 200 次独立实验比较普通 MVDR、对角加载 MVDR 和子空间投影 MVDR 的 SINR 中位数与 10% 分位点。如果普通 MVDR 的 10% 分位点比加载版本低 5dB 以上说明当前参数下它不可用加载是必须的。这个方向上我也翻过车有一回为了追求零陷深度把对角加载系数设得特别小仿真曲线好看但把系统搬到实测环境后方向图高频段出现异常高旁瓣后来才意识到加载不仅抑制噪声也在抑制模型误差。从那以后我养成了一个习惯任何参数改动都要跑一遍蒙特卡洛看分布而不是看单次曲线。希望帮到你。本文还有配套的精品资源点击获取

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑