维纳滤波器代码实战:从时域FIR求解到LMS与频域实现
简介维纳滤波器是信号处理中经典的线性滤波方案以最小化均方误差为准则广泛用于语音降噪和图像复原。该资源面向需要掌握维纳滤波理论并动手实现代码的学习者完整呈现从自相关函数、功率谱密度估计到滤波器系数求解的设计链路。压缩包内共有三个文件均为MATLAB的m脚本分别对应二维维纳滤波以及语音、拼音数据处理的典型实现整个包体量只有1KB精简易读。资源已有446人学习查看适合作为课程设计、竞赛或项目初期的直接参考。通过学习这些代码读者能对照时域与频域两种实现方式理解逆滤波与迭代逼近的差异看到实际应用时如何根据信号统计特性调整滤波强度同时还会涉及快速傅里叶变换和子块处理等优化策略为后续设计自适应滤波算法打下基础。1. 维纳滤波不是黑匣子一段代码看懂最优滤波做信号处理的人多半绕不开维纳滤波降噪、去混响、信道均衡、图像复原处处有它。但很多人第一次接触它是在教材的维纳-霍夫方程里满屏的期望运算和矩阵推导合上书脑子里只剩一个结论——“这是数学家的玩具”。这套关于维纳滤波器的设计代码把时域 FIR 求解、自适应 LMS 逼近、频域算法实现三条路径全部落成了可运行脚本覆盖从公式到调参的完整闭环。你读完后能直观看到给一个带噪信号滤波器系数是怎么从自相关矩阵里解出来的又是怎么被 LMS 一步步“学”出来的以及为什么同一套思路到了图像上要换成频域写法。适合正在做语音/振动信号去噪、入门自适应滤波、或者想弄明白 scipy.signal.wiener 到底干了些啥的从业者。2. 时域维纳滤波设计从维纳-霍夫方程到 FIR 求解2.1 最优滤波问题的数学直觉为什么是最小均方误差先建立一个工程直觉。假设你有一个观测信号 x[n]一个期望信号 d[n]你想设计一个长度为 M 的 FIR 滤波器 w让滤波输出 y[n] 尽量接近 d[n]。这里“接近”的标准就是误差 e[n]d[n]-y[n] 的均方值最小所以叫最小均方误差MMSE准则。为什么不用绝对误差或别的准则因为均方误差对 w 是二次函数有唯一的极小点数学上可导可解还能和“在输入张成的子空间里做正交投影”这个几何解释对上工程实现最直接。把 y[n] 写成向量形式 y[n] wᵀ x[n]其中状态向量 x[n] [x[n], x[n-1], …, x[n-M1]]ᵀ。MSE 对 w 求梯度并令其为零得到一个线性方程组R w pR 是 M×M 的自相关矩阵R[i,j] E[x[n-i]x[n-j]]p 是 M 维互相关向量p[i] E[x[n-i]d[n]]。这个方程就是维纳-霍夫方程的离散形式。它说明最优滤波器系数完全由输入的二阶统计量和输入与期望的互相关决定不依赖信号的具体分布——只要二阶矩稳定滤波器就是固定的这是它和后面自适应方法的本质区别。2.2 维纳-霍夫方程的矩阵形式与求解代码实际工作中我们拿不到真实的统计期望只能用有限长观测样本去估计。我在代码包里通常先把自相关和互相关的估计写成一个独立函数这样算出来的 R 和 p 结构清楚后续无论是直接求逆还是换 Levinson 递推都好改。下面这段是核心实现import numpy as np from scipy.linalg import toeplitz def estimate_acf(x, max_lag): 估计自相关序列 r[0], r[1], ..., r[max_lag] 用时间平均代替统计平均是无偏估计的近似 N len(x) x x - np.mean(x) # 去直流避免 DC 分量污染自相关 acf np.zeros(max_lag 1) for lag in range(max_lag 1): acf[lag] np.dot(x[:N - lag], x[lag:]) / N return acf def estimate_ccf(x, d, max_lag): 估计互相关 p[i] E[x[n-i] * d[n]]i 0 .. max_lag-1 注意这里用的是因果形式用当前和过去的 x 去预测当前 d N len(x) ccf np.zeros(max_lag) for i in range(max_lag): ccf[i] np.mean(x[i:N] * d[:N - i]) return ccf def design_wiener_fir(x, d, order, reg1e-6): 求解维纳-霍夫方程返回 FIR 系数 w rxx estimate_acf(x, order - 1) p estimate_ccf(x, d, order) R toeplitz(rxx) # 自相关矩阵是 Toeplitz 结构 # 加正则化处理病态 R_reg R reg * np.eye(order) * rxx[0] w np.linalg.solve(R_reg, p) return w逻辑说明estimate_acf 里 x[:N-lag] 和 x[lag:] 逐项相乘再求平均本质就是计算间隔 lag 的两个样本的相关程度。注意除以的是 N 而不是 N-lag这是为了保持 R 的半正定性工程上比除以 N-lag 更稳。estimate_ccf 里 x[i:N] 与 d[:N-i] 对齐正好对应 n 从 i 到 N-1 的采样点。构造 R 时直接调用 scipy.linalg.toeplitz因为自相关矩阵天然满足 R[i,j]r[|i-j|]不需要手写双层循环。参数说明order 是滤波器阶数阶数越高对期望信号的建模能力越强但需要的样本量也越大reg 是正则化系数我一般取 1e-6 到 1e-3乘上 rxx[0] 是为了让正则量相对信号能量有个尺度感而不是一个绝对小量。2.3 参数怎么定阶数、样本量与正则化的经验值阶数选择没有公式工程经验是样本量 N 至少是 order 的 10 到 20 倍。比如你有一段 20000 点的信号order 取 32 到 64 都是合理的如果只有 1000 点order 上到 128 基本就是自找麻烦——自相关矩阵的高阶项本身估计方差就大求逆后系数会乱抖。判断方法很简单把 order 从小往大试观察滤波器输出的均方误差找到误差不再明显下降的那个拐点。正则化系数也别无脑设固定值。如果算出来的 R 条件数很大用 np.linalg.cond(R) 看说明输入里某些频率成分能量极低求逆会把噪声放大。这时 reg 从 1e-3 开始往上加直到系数 w 不再出现大的正负交替振荡。另一个容易被忽略的点输入信号一定要先去均值否则 DC 分量会把自相关序列的低 lag 值顶得很大滤波器会优先削直流把有用波动特性盖掉。注意estimate_acf 里如果 x 很长、lag 很大Python 循环会慢。这段代码主要是教学和验证用的生产环境建议换成基于 FFT 的快速相关估计结果一致但速度快几十倍。3. 自适应实现LMS 逼近维纳解的工程路径3.1 直接求逆的工程痛点为什么实际系统用自适应直接解维纳-霍夫方程有个前提信号和噪声的统计特性已知且平稳。但现场数据往往不满足——语音信号每一帧的功率都在变振动信号的特征频率随转速漂移。每来一批新数据就重新估计 R 和 p 再求逆计算量是 O(M³)实时系统扛不住更麻烦的是 R 的估计在非平稳场景下本身就不可靠。所以工程上更常用的是梯度下降思路不直接求解析解而是从某个初始 w 出发沿着 MSE 曲面的负梯度方向迭代每来一个样本就更新一次系数。这就是 Widrow 提出的 LMS 算法复杂度只有 O(M)且不需要显式计算自相关矩阵。LMS 的更新公式是 w[n1] w[n] 2μ e[n] x[n]。它的核心思想是用瞬时梯度 e[n]x[n] 代替真实梯度 E[e[n]x[n]]虽然每一步方向都有噪声但平均来看是朝着维纳解走的。参数 μ 是步长控制收敛速度和稳态失调的平衡。3.2 标准 LMS十行代码实现与收敛条件我用的 LMS 实现里维持了一个延迟线缓冲区每个时刻先移位、再取新样本、然后计算输出和误差、最后更新权重这样因果关系是清晰的也方便后面接 NLMS 版本。def lms_filter(x, d, order, mu): 标准 LMS 自适应滤波 x: 输入信号 d: 期望信号 order: 滤波器阶数 mu: 步长 返回: 最终权重、滤波输出、误差序列 n len(x) w np.zeros(order) buf np.zeros(order) # 延迟线buf[0] 是当前样本 y np.zeros(n) e np.zeros(n) for i in range(n): buf[1:] buf[:-1] # 历史样本后移 buf[0] x[i] # 当前样本入队 y[i] np.dot(w, buf) e[i] d[i] - y[i] w w 2 * mu * e[i] * buf return w, y, e逻辑说明buf 每次把旧样本往后推一格所以 buf[j] 对应 x[i-j]正好是 FIR 里“最近的 M 个样本”的状态表示。权重更新用的是瞬时梯度没有除以任何归一化量因此步长 μ 的选择直接决定稳定性。参数说明μ 的稳定上限理论上是 2/λ_maxλ_max 是输入自相关矩阵的最大特征值实际中没人去算特征值。工程做法是看输入功率μ 取 0.01 到 0.05 这个量级输入功率越大步长要越小。如果误差 e 发散或者权重在几个样本内冲到天文数字八成是 μ 太大了。3.3 NLMS 改进把步长归一化到输入功率标准 LMS 对输入功率敏感——输入大时梯度也大同样的 μ 可能直接发散输入小时收敛又慢得让人着急。归一化 LMSNLMS把步长除以输入向量的能量让有效步长与输入幅度无关这是实际代码里我最常用的变体def nlms_filter(x, d, order, mu, eps1e-6): 归一化 LMS步长除以输入向量能量 mu 在 0.1 ~ 0.5 之间取值比标准 LMS 的 mu 大一两个数量级 n len(x) w np.zeros(order) buf np.zeros(order) y np.zeros(n) e np.zeros(n) for i in range(n): buf[1:] buf[:-1] buf[0] x[i] y[i] np.dot(w, buf) e[i] d[i] - y[i] norm np.dot(buf, buf) eps w w mu / norm * e[i] * buf return w, y, e逻辑说明唯一的区别是更新项前面多了 1/norm其中 norm 是当前输入向量的能量eps 用来防止输入全零时除零。归一化之后无论输入是小信号还是大信号每次迭代的有效步长都保持在可控范围。参数说明NLMS 的 mu 取值范围推荐 0.1 ~ 0.5mu1 相当于每步直接把误差在当前输入方向上的分量全部抵消再大就会震荡。实际语音降噪场景我一般从 0.1 起调如果收敛慢就加到 0.3但超过 0.5 后稳态误差明显变大。3.4 验证自适应解收敛到维纳解自适应算法靠不靠谱最直接的验证方法是造一个已知的“真实系统”让白噪声通过一个固定的 FIR 滤波器把输出加一点噪声作为期望信号然后分别用维纳-霍夫求解和 LMS 去辨识这个 FIR 系数看两者是否一致。np.random.seed(42) n 20000 order 16 # 构造一个真实的 FIR 系统 h_true np.exp(-np.arange(order) * 0.2) * np.cos(np.arange(order) * 0.5) h_true h_true / np.sqrt(np.sum(h_true ** 2)) # 归一化能量 # 输入是白噪声期望 真实输出 小噪声 x np.random.randn(n) d np.convolve(x, h_true, modefull)[:n] 0.01 * np.random.randn(n) # 维纳解 w_wiener design_wiener_fir(x, d, order, reg1e-6) # LMS 解 w_lms, _, e_lms nlms_filter(x, d, order, mu0.2) print(真实系统 h_true :, np.round(h_true, 3)) print(维纳解 w_wiener:, np.round(w_wiener, 3)) print(LMS 解 w_lms :, np.round(w_lms, 3)) print(LMS 滤波误差方差:, np.var(e_lms))逻辑说明这个脚本是整套代码里最值得先跑的一段。如果 w_wiener 和 w_lms 都收敛到接近 h_true说明你的维纳求解代码、LMS 实现、步长设置全部正确如果 LMS 的权重偏离优先怀疑 mu 太大导致稳态失调或者迭代次数不够没收敛。误差方差可以作为一个收敛指标它应该随迭代下降到一个平台平台高度由 μ、噪声功率和阶数共同决定。4. 频域维纳滤波图像去噪与语音增强的实用写法4.1 频域维纳滤波的算符直觉增益就是信噪比函数时域维纳滤波用自相关矩阵描述信号结构到了频域傅里叶变换把卷积变成乘积自相关变成功率谱维纳滤波器的表达式变得非常直观。对于加性噪声模型 y s v在某个频率点上的最优增益是H(k) S(k) / (S(k) V(k))其中 S(k) 是期望信号的功率谱V(k) 是噪声功率谱。这个公式可以改写成信噪比形式H(k) SNR(k) / (1 SNR(k))当 SNR 很高时H 趋近于 1该频率成分原样保留当 SNR 很低时H 趋近于 0该频率成分被压掉。所以频域维纳滤波本质是一个“按信噪比分配权重”的软门限它不像谱减法那样硬截断也因此振铃更少。还有一点容易被忽略这个增益是实数乘到频谱上只改幅度、不改相位也就是说维纳滤波是相位保持的。在语音增强里人耳对相位不敏感这就是维纳滤波听感比谱减法自然的重要原因。4.2 图像去噪的手工实现从 PSD 估计到频域滤波图像去噪是频域维纳滤波最典型的落地场景。直接对观测图像的频谱取模平方作为信号功率谱估计再除以加噪后的总功率谱就能得到逐点的增益。但逐点除法的频域波动太大实际要先对功率谱做平滑否则出来的图像会有颗粒状纹理。我封了一个函数import numpy as np from scipy import signal def wiener_freq_filter(img, noise_var, smooth_size5, max_gain1.0): 频域维纳滤波去噪 img: 0~1 范围的灰度图二维数组 noise_var: 噪声方差时域 smooth_size: 功率谱平滑窗口尺寸越大增益曲线越平滑 max_gain: 增益上限防止过冲 ny, nx img.shape # 去均值避免 DC 项主导功率谱 X img - np.mean(img) Y np.fft.fft2(X) psd np.abs(Y) ** 2 # 功率谱平滑减小频域波动 if smooth_size 1: kernel np.ones((smooth_size, smooth_size)) / (smooth_size ** 2) psd signal.convolve2d(psd, kernel, modesame, boundarywrap) # 频域总噪声功率约等于时域方差 * 像素数Parseval 定理 noise_power noise_var * ny * nx H psd / (psd noise_power) H np.clip(H, 0.0, max_gain) # 增益限幅 out np.fft.ifft2(Y * H).real return out np.mean(img) # 加回直流分量逻辑说明psd / (psd noise_power) 就是 H 信号谱 / 信号谱 噪声谱的逐点实现。关键细节是噪声功率要把时域方差乘上像素总数因为二维 DFT 的能量守恒关系是频域总功率等于时域总功率的 N 倍噪声方差标示的是时域单点方差直接拿它做频域分母会差一个 N 的因子导致整体增益偏低、图像过平滑。参数说明noise_var 需要通过别的手段预先估计常见做法是取图像高频对角区域的方法方差smooth_size 取 3 到 7太小则增益曲线抖动太大则频域细节被抹平、边缘过渡变钝max_gain 一般保持 1.0不需要调。4.3 噪声方差估计与两种实用参数设定noise_var 怎么估是频域维纳滤波最容易翻车的地方。我常用的办法是找图像里一块平坦区域比如天空、墙壁它的高频能量基本全来自噪声直接算这块区域的方差作为全局噪声方差。如果场景里没有明显平坦区就取图像四个角的局部方差中位数。更讲究的做法是拉普拉斯算子估计法对图像做拉普拉斯滤波响应中与噪声相关部分的方差乘以一个校准系数这个系数和图像内容有关我一般只在平坦区域法失效时才用。实际调参时有两个极端要避免noise_var 估大了滤波器把大量高频细节当噪声压掉图像发糊估小了增益 H 在低频接近 1、高频接近 0 的过渡带太窄残留噪声呈现明显的“麻点”。我的话是宁可稍微高估一点视觉上平滑比噪点更容易让甲方接受但这个取舍要看具体用途——如果去噪后还要做边缘检测就得把 noise_var 压低保留更多高频边缘。语音场景下同理先验信噪比估计用的决策引导法本质上也是在低信噪比帧里避免增益骤变和这里的平滑思想殊途同归。5. 维纳滤波常见问题排查五个必踩的坑5.1 现象滤波后信号反而更吵高频像被放大原因典型的是自相关矩阵病态reg 设得太小或者干脆没加正则化。input 信号里有些频带能量极低R 接近奇异求逆后滤波器系数出现大幅正负交替等效为高通放大噪声。 解决先打印 np.linalg.cond(R) 看条件数如果超过 1e8 就把 reg 从 1e-6 提到 1e-3 甚至 1e-2同时检查是不是 order 开得太大样本量不够撑起这么大的滤波器。5.2 现象输出严重滞后波形被“抹平”原因把非因果平滑和因果滤波搞混了。维纳 FIR 默认是因果的用当前和过去样本预测当前本身带群延迟延迟量与滤波器阶数的重心位置有关如果期望信号 d 和 x 没有对齐时间轴结果会像平移过的低通滤波。 解决先做互相关估计看看 p 的峰值在哪个 lag。如果峰值不在 lag0说明 x 和 d 之间存在相对时延需要先对齐再做维纳求解。对离线数据我会把 d 向前移 shift 个样本再算或者改用相位补偿后的非因果滤波。5.3 现象LMS 误差爆炸权重几个样本内冲上天原因步长 μ 超出稳定范围或者输入信号里有突变的大幅值样本。标准 LMS 的 μ 上限和输入功率挂钩现场信号功率稍涨一点就翻车NLMS 如果忘了加 eps输入全零段会触发除零也会崩。 解决逐段打印误差能量如果从某一段开始指数上升基本就是 μ 过大。要么砍 μ要么换 NLMS。我一般在 LMS 代码里加一个保护误差超过信号峰值的 10 倍时强制重置权重。5.4 现象频域滤波后图像边缘有振铃出现波纹原因增益 H 在频谱上变化过于剧烈在各频带边缘产生了类似吉布斯效应的过冲。直接逐点除法不光滑就会在强边缘附近出现弧形纹理。 解决把 smooth_size 调大同时限制增益最大值。更稳的方案是先用中值滤波平滑 H 的幅度谱而不是用均值窗口——均值会把窄尖峰拉宽中值能直接削掉孤立尖峰。如果振铃还是压不住考虑把图像分块后在每块内独立求增益块边界再用重叠相加法融合。5.5 现象图像越滤越糊细节全丢原因noise_var 估计偏大了。维纳滤波是“按信噪比分配保留比例”噪声方差估得高等于在说所有频带信噪比都很低于是高频细节一概被当噪声压掉。 解决把 noise_var 减半再看残差。有个实用检查法对滤波后图像减去原图残差应该是接近纯噪声的如果残差里能看出物体轮廓说明好多有效信号被一起减掉了。这时候要调小 noise_var而不是调 smooth_size。6. 收敛验证与参数寻优让维纳滤波器真正可用一套代码写完第一件事不是拿真实数据试效果而是跑通“辨识已知系统”的验证流程。真实数据的真值你不知道出了问题没法区分是算法不对还是数据本身噪声模型不匹配仿真里有 ground truth任何一处实现错都能直接暴露。我的固定做法是把第四章里的系统辨识脚本和噪声方差扫描结合成一份参数对照表每次调参都记录阶数、步长、正则化系数、滤波后 SNR 增益这四列。def evaluate_snr(clean, est): noise clean - est # 防止除零加极小量 return 10 * np.log10(np.sum(clean**2) / (np.sum(noise**2) 1e-12)) # 阶数扫描看均方误差随阶数的下降曲线 for order in [8, 16, 32, 64]: w design_wiener_fir(x, d, order, reg1e-6) est signal.lfilter(w, [1.0], x) print(forder{order:3d} SNR改善{evaluate_snr(d, est):.2f} dB) # 步长扫描看 LMS 稳态误差 for mu in [0.05, 0.1, 0.2, 0.4]: _, _, err nlms_filter(x, d, 32, mu) print(fmu{mu:.2f} 稳态误差方差{np.var(err[-2000:]):.6f})跑完这两组循环大部分调参问题都有了答案阶数扫描曲线会在某个位置出现拐点拐点之后 SNR 改善不再上升那就是当前数据量下的最优阶数步长扫描里误差方差最小的那个 mu 就是当前信噪比下的最优步长再小则收敛太慢、再大则稳态失调升上去。对频域维纳滤波器我会额外检查残差的自相关理想情况下滤波后的误差与输入互相关应该趋近于零。用 np.correlate(err, x, modefull) 画出来如果 lag 附近还残留明显相关峰说明滤波器还欠拟合噪声里有一部分和输入相关的成分没被去掉。残差自相关越平越说明维纳解做到了“正交投影”。还有一条习惯我想重点说不要把维纳滤波当成一个一劳永逸的模块。同一套代码换一份数据阶数和噪声方差都要重新过一遍上述流程。从那以后我每次做维纳滤波相关的工作都会先跑一遍仿真对照再上真实数据省掉了好多“效果不好但说不清为什么”的玄学时刻。希望帮到你。本文还有配套的精品资源点击获取

相关新闻

银行监管报送系统设计:JSON解析、质量校验与增量处理实战

银行监管报送系统设计:JSON解析、质量校验与增量处理实战

简介:这是一份面向银行监管报送与数据治理工程师的实战型文档,针对EAST5.0等监管标准下异构数据源统一转换、质量校验与增量报送难题,给出基于JSON的完整系统设计思路,并指导构建分钟级增量报送机制。资源包为单个docx文档&#x…

2026/10/18 13:32:00 阅读更多 →
数据增强策略实战:从几何变换到Mixup与Albumentations落地

数据增强策略实战:从几何变换到Mixup与Albumentations落地

做视觉模型这几年,有一个感受越来越深:数据增强策略才是许多项目里真正的“胜负手”。模型结构可以抄,损失函数可以换,但同样是 ResNet、同样是那几个公开权重,有些人训练出来就是能稳定涨点,有些人就是怎么…

2026/10/18 13:31:00 阅读更多 →
Qoder NEXT深度实测:代码补全采纳率提升65%背后的项目级上下文建模

Qoder NEXT深度实测:代码补全采纳率提升65%背后的项目级上下文建模

1. Qoder NEXT 的核心变化:别被"65%"这个数字带偏了先把我这几周天天用 Qoder 写代码的感受说清楚:这次 NEXT 版本最打动我的不是那个 65% 的采纳率数字,而是补全功能在"上下文理解"这个维度上的质变。以前写代码&#x…

2026/10/18 13:31:00 阅读更多 →

最新新闻

MT7663 USB WiFi驱动移植指南:交叉编译、固件加载与wlan0注册

MT7663 USB WiFi驱动移植指南:交叉编译、固件加载与wlan0注册

简介:这份资源是MT7663 USB转WiFi驱动源码包,面向需要在嵌入式Linux平台上移植无线网卡的开发者,尤其适合海思3531等ARM64平台。源码已在海思3531上交叉编译通过,生成的wlan_mt7663_usb.ko约3MB,配套的Makefile.aarch已…

2026/10/18 14:18:27 阅读更多 →
ADC数据手册深度解析:从PDF参数提取到硬件时序实现

ADC数据手册深度解析:从PDF参数提取到硬件时序实现

简介:本资源为MSM381A3729Z9BM1C模拟输出MEMS麦克风的官方英文数据手册(PDF),面向电子工程师、硬件开发人员及声学器件选型技术人员,用于指导该高性能微型麦克风在移动终端与可穿戴设备中的电路设计、PCB布局、SMT贴装…

2026/10/18 14:18:27 阅读更多 →
P1268 树的重量 【洛谷算法习题】

P1268 树的重量 【洛谷算法习题】

P1268 树的重量 网页链接 P1268 树的重量 题目描述 树可以用来表示物种之间的进化关系。一棵“进化树”是一个带边权的树,其叶节点表示一个物种,两个叶节点之间的距离表示两个物种的差异。现在,一个重要的问题是,根据物种之间…

2026/10/18 14:18:27 阅读更多 →
GRBL固件深度解析:从Arduino到工业级CNC运动控制

GRBL固件深度解析:从Arduino到工业级CNC运动控制

简介:本资源是面向嵌入式开发者、DIY数控爱好者及高校机电类专业学生的GRBL开源固件完整源码包,专为基于Arduino的CNC控制器开发与学习设计,解决小型数控设备(如雕刻机、激光切割机)的G代码解析与运动控制核心问题。压…

2026/10/18 14:18:27 阅读更多 →
PAD竞速答题怎么按队伍分组上屏:一场厂区开幕式安全知识答题的系统配置复盘

PAD竞速答题怎么按队伍分组上屏:一场厂区开幕式安全知识答题的系统配置复盘

本文范围:开幕式里的答题环节;PAD型号、组网方式和系统代码不在讨论内。1. 项目背景塔河炼化(中国石化塔河炼化有限责任公司)2026年5月26日在新疆阿克苏地区举行第二届“最强操作”竞赛开幕式,开幕式里安排了一段安全知…

2026/10/18 14:18:27 阅读更多 →
超立方体Ramsey(openai/math 家族171)攻坚日志 H11:row-link商图构造长链路形式化进展(节选)

超立方体Ramsey(openai/math 家族171)攻坚日志 H11:row-link商图构造长链路形式化进展(节选)

超立方体Ramsey(openai/math 家族171)攻坚日志 H11:row-link商图构造长链路形式化进展(节选)专栏:组合概率与形式化审计|标签:Lea(n^4)、极值组合、Ramsey理论、条件局部引理、超立方…

2026/10/18 14:17:26 阅读更多 →

日新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

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

2026/10/18 0:55:02 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

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

2026/10/17 17:22:31 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

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

2026/10/18 12:16:16 阅读更多 →