风扇选型软件:从P-Q曲线到工作点计算与批量筛选

简介:Optimiser风扇选型软件是Multi-Wing官方推出的一款轴流风扇选型工具,面向暖通空调、工业通风、冷却散热等领域的工程师与设备选型人员。使用者只需输入应用所需的风量、压力与能耗等参数,软件即可自动匹配莫迪温风扇型号,帮助客户针对自身特定工况快速锁定最佳轴流风扇方案,降低反复试算与人工查表成本。资源包共34个文件,整体约7.27MB,以11个PDF技术文档为主,涵盖ATEX防爆认证、法兰规格与脉冲工况等说明,另含2个可执行程序、2个动态链接库及配置文件、图标、数据库等运行组件,构成一套可直接安装使用的完整软件环境。目前已有549人学习下载,适合需要为具体项目做风扇选型、核对防爆与法兰参数或搭建选型工具环境的工程技术人员参考使用。

1. 风扇选型这件事,为什么值得单独写一个软件

做散热设计的人大多有过这种经历:结构工程师丢过来一个机箱模型,说“风量够不够你算一下”,然后你打开 Excel,翻出三份不同供应商的 PDF 样本,开始一行行抄风量、静压、转速、噪声。抄到一半发现 A 家的曲线是 12V 满速测的,B 家标的是 7V 半速,C 家干脆只给了最大风量没给 P-Q 曲线。三个小时后你算出一个“大概够用”,但心里清楚这个结论经不起追问。

“Optimiser风扇选型软件.zip”这个标题指向的就是这类问题的工程化解法:把风扇选型从“翻样本 + 拍脑袋”变成“输入工况 → 匹配曲线 → 输出候选型号和裕量”。它服务的不是消费级装机,而是需要留痕、需要复核、需要给评审交差的散热设计场景——机箱风道、电源模块、逆变器、服务器节点、充电桩功率柜,凡是靠强制风冷压温升的地方都用得上。核心逻辑只有一条:风扇的工作点由系统阻抗曲线和风扇 P-Q 曲线的交点决定,选型软件要做的就是把这个交点算准、把候选型号排好、把裕量标出来。

2. 风扇选型软件的底层逻辑:工作点、阻抗曲线与选型判据

2.1 为什么“最大风量”这个参数几乎没用

风扇样本首页那个大字标注的风量,是在零静压条件下测出来的,也就是风扇对着完全敞开的空间吹。真实机箱里风扇前面有滤网、有散热齿、有弯折风道,这些都会产生静压损失。系统阻抗越高,风扇实际能推出去的风量就越小。把最大风量当成实际风量来选型,是新手最常翻的车。

风扇的 P-Q 曲线是一条从“最大静压、零风量”到“最大风量、零静压”的下降曲线,系统阻抗曲线是一条从原点出发的上升曲线(近似抛物线,阻抗随风量平方增长)。两条线的交点就是工作点。选型软件要做的第一件事,就是让用户能描述系统阻抗,然后和风扇曲线求交。

系统阻抗的工程估算常用这个形式:

ΔP = K × Q²

其中 ΔP 是静压损失(Pa),Q 是风量(m³/h 或 CFM),K 是阻抗系数。K 值取决于滤网目数、散热器翅片密度、风道截面积和转弯数量。实际项目中 K 很难纯理论算准,常见做法是先用经验值估一个,再拿样机实测风量反推修正。

2.2 选型判据不止风量:噪声、寿命、供电、成本四条线

一个能用的选型工具,输出不能只有“风量够不够”。工程上至少要同时看四条线:

判据典型要求数据来源常见坑
工作点风量≥ 需求风量 × 1.2P-Q 曲线求交曲线是额定电压下的,降压后要重算
噪声≤ 项目限值(如 45 dB(A))样本噪声值或实测样本值多在 1m 自由场测,装机后反射会偏高
寿命≥ 整机设计寿命L10 寿命曲线高温下寿命折减常被忽略
供电电压/电流/启动浪涌匹配电气规格多风扇并联时启动电流叠加

选型软件的价值就在于把这四条线做成可筛选的字段,而不是让工程师在三个 PDF 之间来回翻。

2.3 最小可用的选型计算:从需求风量到候选型号

下面这段 Python 演示了核心计算逻辑:给定需求风量和阻抗系数,对每个候选风扇的 P-Q 曲线求工作点,再判断是否满足裕量。风扇曲线用离散点表示,实际软件里通常是从样本数字化或供应商提供的 CSV 导入。

import numpy as np def system_impedance(q, k): """系统阻抗曲线:ΔP = k * Q^2,q 单位 m³/h,返回 Pa""" return k * q ** 2 def fan_curve(q, p_max, q_max): """简化风扇 P-Q 曲线:从 (0, p_max) 到 (q_max, 0) 的二次下降 真实曲线应使用样本离散点插值,这里仅作演示""" # 归一化后按抛物线近似,实际项目建议直接读样本点 return p_max * (1 - (q / q_max) ** 2) def find_operating_point(k, p_max, q_max, q_range=(0, 500), steps=2000): """求工作点:阻抗曲线与风扇曲线的交点""" qs = np.linspace(q_range[0], q_range[1], steps) dp_sys = system_impedance(qs, k) dp_fan = fan_curve(qs, p_max, q_max) diff = dp_fan - dp_sys # 找符号变化点,线性插值得到交点 idx = np.where(np.diff(np.sign(diff)))[0] if len(idx) == 0: return None # 无交点,风扇在该阻抗下推不出风 i = idx[0] q1, q2 = qs[i], qs[i + 1] d1, d2 = diff[i], diff[i + 1] q_op = q1 - d1 * (q2 - q1) / (d2 - d1) p_op = system_impedance(q_op, k) return q_op, p_op # 候选风扇参数(示例数据,非真实型号) fans = [ {"name": "Fan-A-40x20", "p_max": 120, "q_max": 28, "noise": 42, "life_h": 70000}, {"name": "Fan-B-40x28", "p_max": 200, "q_max": 45, "noise": 48, "life_h": 50000}, {"name": "Fan-C-60x25", "p_max": 90, "q_max": 60, "noise": 38, "life_h": 80000}, ] k_system = 0.08 # 阻抗系数,需按实际风道修正 q_required = 20 # 需求风量 m³/h margin = 1.2 # 裕量系数 for fan in fans: result = find_operating_point(k_system, fan["p_max"], fan["q_max"]) if result is None: print(f"{fan['name']}: 无工作点,风量不足") continue q_op, p_op = result ok = q_op >= q_required * margin print(f"{fan['name']}: 工作点 Q={q_op:.1f} m³/h, P={p_op:.1f} Pa, " f"噪声={fan['noise']} dB(A), 裕量={'OK' if ok else '不足'}")

这段代码的关键点有三个。第一,system_impedance里的 K 值是整个计算的命门,K 估小了工作点会偏乐观,估大了会选到过大过吵的风扇,实际项目中建议先用经验值跑一版,再用样机实测风量反推 K。第二,fan_curve这里用了抛物线近似,真实风扇曲线在中段往往偏离抛物线,正式工具应该用样本离散点做插值,否则工作点会有 5%~15% 的偏差。第三,find_operating_point返回None的情况必须处理——高阻抗系统里小风扇可能根本推不出风,这时候不是“风量小”,而是“没有工作点”,两者在工程上的处理方式完全不同。

2.4 阻抗系数 K 的取值:经验范围与修正方法

K 值没有万能公式,但可以按风道特征给一个起步范围,再实测修正:

风道特征K 经验范围说明
敞开进风、无滤网0.01~0.03接近自由吹
普通防尘网 + 直风道0.04~0.08最常见机箱场景
密目滤网 + 散热齿0.10~0.20服务器/电源模块常见
多级弯折 + 窄截面0.20~0.50需实测,估算误差大

修正方法:样机跑起来后,用风速仪在出风口截面测平均风速,乘以截面积得到实际风量,代回 ΔP = K × Q² 反推 K。一般迭代一到两轮就能把 K 收敛到可用精度。

3. 把选型软件跑起来:数据准备、曲线数字化与批量筛选

3.1 风扇数据的三种来源与数字化流程

选型软件的第一个工程问题是数据从哪来。常见三种来源:

一是供应商提供的 CSV 或 Excel 曲线数据,这是最理想的,直接导入即可。二是 PDF 样本里的曲线图,需要数字化——用 WebPlotDigitizer 之类的工具取点,或者手工在图上读 8~12 个点。三是只有几个关键参数(最大风量、最大静压、额定转速),这种情况只能用近似曲线,精度最差,但比没有强。

数字化时有个血泪经验:注意样本曲线的测试电压。同一颗风扇在 12V 和 7V 下的 P-Q 曲线差别很大,7V 下最大静压可能只有 12V 的 40%。如果软件里只存了一条曲线,降压使用时工作点会算错。稳妥做法是每个风扇存多条曲线,按电压索引。

import json # 风扇数据库结构示例:每个风扇支持多电压曲线 fan_db = { "Fan-A-40x20": { "size_mm": [40, 40, 20], "bearing": "dual_ball", "curves": { "12V": { "q": [0, 5, 10, 15, 20, 25, 28], # m³/h "p": [120, 115, 105, 90, 70, 40, 0] # Pa }, "7V": { "q": [0, 4, 8, 12, 16, 20, 22], "p": [48, 45, 40, 33, 24, 12, 0] } }, "noise_dba": {"12V": 42, "7V": 32}, "life_h": 70000, "rated_current_a": 0.12 } } def interpolate_curve(curve, q_query): """在离散 P-Q 曲线上线性插值求静压""" qs, ps = curve["q"], curve["p"] if q_query <= qs[0]: return ps[0] if q_query >= qs[-1]: return ps[-1] for i in range(len(qs) - 1): if qs[i] <= q_query <= qs[i + 1]: ratio = (q_query - qs[i]) / (qs[i + 1] - qs[i]) return ps[i] + ratio * (ps[i + 1] - ps[i]) return 0 # 用插值替代抛物线近似,工作点精度明显提升 def find_op_interp(k, curve, q_max_guess=200): qs = np.linspace(0, q_max_guess, 5000) diff = np.array([interpolate_curve(curve, q) - k * q ** 2 for q in qs]) idx = np.where(np.diff(np.sign(diff)))[0] if len(idx) == 0: return None i = idx[0] q1, q2 = qs[i], qs[i + 1] d1, d2 = diff[i], diff[i + 1] q_op = q1 - d1 * (q2 - q1) / (d2 - d1) return q_op, k * q_op ** 2

interpolate_curve用线性插值读曲线,比抛物线近似更贴近样本。find_op_interp在 0 到q_max_guess之间扫 5000 个点找符号变化,精度足够工程用。注意q_max_guess要设得比所有候选风扇的最大风量都大,否则可能漏掉交点。

3.2 批量筛选:把四条判据做成可配置的过滤器

数据准备好之后,选型就变成筛选问题。下面这个筛选函数把风量裕量、噪声上限、寿命下限、供电电流上限做成参数,一次跑完所有候选:

def screen_fans(fan_db, k, q_required, margin=1.2, noise_limit=45, life_min=50000, current_limit=0.5, voltage="12V"): results = [] for name, spec in fan_db.items(): curve = spec["curves"].get(voltage) if curve is None: continue # 该电压下无数据,跳过 op = find_op_interp(k, curve) if op is None: results.append({"name": name, "status": "无工作点"}) continue q_op, p_op = op noise = spec["noise_dba"].get(voltage, 999) reasons = [] if q_op < q_required * margin: reasons.append(f"风量裕量不足({q_op:.1f}<{q_required*margin:.1f})") if noise > noise_limit: reasons.append(f"噪声超标({noise}>{noise_limit})") if spec["life_h"] < life_min: reasons.append(f"寿命不足({spec['life_h']}<{life_min})") if spec["rated_current_a"] > current_limit: reasons.append(f"电流超标({spec['rated_current_a']}>{current_limit})") results.append({ "name": name, "q_op": round(q_op, 1), "p_op": round(p_op, 1), "noise": noise, "life_h": spec["life_h"], "status": "通过" if not reasons else "; ".join(reasons) }) # 按工作点风量降序排列,方便看裕量 results.sort(key=lambda r: r.get("q_op", 0), reverse=True) return results for r in screen_fans(fan_db, k=0.08, q_required=20): print(r)

screening的参数就是工程判据的直接映射。margin=1.2是风量裕量,一般取 1.2~1.5,高海拔或高温场景要加大。noise_limit按项目要求填,注意样本噪声是 1m 自由场值,装机后通常偏高 2~5 dB(A)。current_limit在多风扇并联时要按总电流算,还要留启动浪涌余量。

3.3 输出选型报告:让评审能看懂你的依据

选型结果最终要能交出去。一份能过评审的报告至少包含:需求工况(风量、阻抗系数及来源)、候选风扇的工作点计算、四条判据的对比表、推荐型号及理由、未选型号的淘汰原因。软件输出时把这些字段固定下来,比手工整理 Excel 靠谱得多。

def export_report(results, q_required, k, filename="fan_selection.csv"): import csv with open(filename, "w", newline="", encoding="utf-8-sig") as f: writer = csv.writer(f) writer.writerow(["需求风量(m³/h)", q_required, "阻抗系数K", k]) writer.writerow([]) writer.writerow(["型号", "工作点风量", "工作点静压", "噪声dB(A)", "寿命h", "结论"]) for r in results: writer.writerow([r["name"], r.get("q_op", "-"), r.get("p_op", "-"), r.get("noise", "-"), r.get("life_h", "-"), r["status"]]) print(f"报告已导出: {filename}")

encoding="utf-8-sig"是为了 Excel 打开中文不乱码,这个细节踩过坑的人都懂。报告里把 K 值和需求风量写在第一行,是为了让评审能追溯计算依据——选型结论可复核,比结论本身更重要。

4. 避坑与排查:风扇选型软件落地时最容易翻车的五件事

4.1 工作点算出来偏乐观,实测风量总比计算值低

现象:软件算出工作点风量 25 m³/h,样机实测只有 18 m³/h,差了近三成。

原因:K 值估小了。软件里填的 K 往往只考虑了主要滤网,忽略了线缆遮挡、连接器凸起、风道壁面摩擦这些“隐形阻抗”。另外风扇进气侧如果有遮挡,实际曲线会整体下移,软件里用的还是自由进气曲线。

解决:K 值先按经验范围上限取,实测后用风速仪反推修正。进气侧有遮挡时,在曲线数据里做折减,或者直接选大一档的风扇。迭代一到两轮,计算和实测能收敛到 10% 以内。

4.2 噪声判据通过了,装机后却被投诉吵

现象:软件筛选时噪声 42 dB(A),低于 45 的限值,但整机跑起来用户反馈高频啸叫明显。

原因:样本噪声是 1m 自由场 A 计权值,装机后风扇靠近格栅、散热齿,气流分离产生高频噪声,A 计权对高频的衰减又不够,主观感受比数值差。另外多风扇并联时,同频噪声叠加,总声压级会涨 3~6 dB(A)。

解决:噪声限值留 3~5 dB(A) 余量;多风扇场景按总声压级算;对噪声敏感的项目,优先选大直径低转速方案,而不是小直径高转速。

4.3 降压使用后风量断崖式下跌

现象:12V 曲线算出来够用,为了降噪降到 7V,结果温升直接超标。

原因:风扇 P-Q 曲线对电压非常敏感,7V 下最大静压可能只有 12V 的 40%,最大风量也会降 20%~30%。软件里如果只存了 12V 曲线,降压后的工作点完全算错。

解决:数据库里每个风扇存多电压曲线,筛选时按实际工作电压选曲线。没有低压曲线数据的,按经验做折减:7V 下最大静压取 12V 的 40%,最大风量取 75%,再算工作点。

4.4 寿命判据用了样本值,忽略了温度折减

现象:软件里寿命 70000h 通过,但项目在 60℃ 环境下跑,实际寿命可能只有标称的一半。

原因:风扇 L10 寿命通常是在 40℃ 或 25℃ 下测的,轴承润滑脂在高温下退化加快。温度每升 10℃,寿命大约减半(具体折减系数看轴承类型和润滑脂)。

解决:软件里加温度折减字段,按实际环境温度修正寿命。高温项目优先选双滚珠轴承,含油轴承在高温下寿命衰减更快。

4.5 多风扇并联时电流和风量都算错

现象:单颗风扇电流 0.12A,选了 4 颗,以为总电流 0.48A,结果电源模块启动时保护了。

原因:风扇启动瞬间浪涌电流可达额定值的 2~3 倍,4 颗同时启动,浪涌叠加可能超过 1A。风量方面,多风扇并联如果风道设计不好,会出现回流和抢风,总风量小于单颗之和。

解决:电流按额定值 × 2 留浪涌余量,或者做软启动分批上电。风量方面,并联风扇之间留足够间距,避免进气抢风;风道设计尽量让每颗风扇的进气和排气互不干扰。

5. 进阶技巧:用实测数据反哺选型模型,让下一版算得更准

选型软件用久了会发现,最值钱的不是代码,是积累下来的“计算值 vs 实测值”对照数据。我一般会在项目结束后做一件事:把软件算出的工作点风量、实测风量、当时的 K 值、环境温度记到一张表里。攒上十几个项目,就能反推出不同风道特征下 K 值的修正系数,下一版选型直接套用,精度比纯经验估算高一大截。

具体做法是维护一个修正表:

风道特征初始 K实测反推 K修正系数样本数
普通防尘网+直风道0.060.0821.378
密目滤网+散热齿0.150.211.405
多级弯折+窄截面0.300.481.603

修正系数就是实测反推 K 除以初始 K 的平均值。下次遇到同类风道,初始 K 乘以修正系数作为起点,迭代次数能少一半。样本数少于 3 的行先别用,等数据攒够再说。

另一个技巧是把实测风量做成软件的自检功能。样机跑起来后,输入实测风量和当时的转速、电压,软件自动反推 K 并提示“当前 K 与选型时用的 K 偏差 XX%,建议重新筛选”。这个功能不复杂,但能挡住很多“选型时算得好好的,装机后才发现不对”的情况。

def back_calculate_k(q_measured, p_measured): """由实测风量和静压反推阻抗系数 K""" if q_measured <= 0: return None return p_measured / (q_measured ** 2) def check_k_drift(k_design, k_measured, threshold=0.2): """检查设计 K 与实测 K 的偏差是否超过阈值""" if k_measured is None: return "实测数据无效" drift = abs(k_measured - k_design) / k_design if drift > threshold: return (f"K 偏差 {drift*100:.0f}%,超过 {threshold*100:.0f}% 阈值," f"建议用 K={k_measured:.3f} 重新筛选") return f"K 偏差 {drift*100:.0f}%,在可接受范围内" # 示例:设计 K=0.08,实测风量 18 m³/h,静压 26 Pa k_meas = back_calculate_k(18, 26) print(check_k_drift(0.08, k_meas)) # 输出:K 偏差 126%,超过 20% 阈值,建议用 K=0.080 重新筛选

back_calculate_k就是 ΔP = K × Q² 的反解,简单但实用。check_k_drift的阈值我一般设 20%,超过就说明设计阶段的 K 估得离谱,必须重新筛选。这个自检动作花不了几分钟,但能避免把错误结论带到下一版设计里。

说到底,风扇选型软件的核心竞争力不在界面多漂亮,而在数据准不准、判据全不全、能不能用实测反哺模型。我自己的习惯是每做完一个项目就往数据库里补几条实测记录,两年下来,同样的风道特征,第一版筛选的命中率从三成提到了七成以上。希望帮到你。

本文还有配套的精品资源,点击获取

相关新闻

AI辅助项目管理实操:用CodeBuddy打造可对话的“活档案”

AI辅助项目管理实操:用CodeBuddy打造可对话的“活档案”

说实话&#xff0c;以前我对“用AI做项目管理”这事挺抵触的。项目管理讲究的是人对人的协作、决策和沟通&#xff0c;AI能插得上什么手&#xff1f;直到我连续带了三周迭代&#xff0c;发现自己一半精力被会议、同步、验收这些琐事磨掉了&#xff0c;才下定决心让CodeBuddy进项…

2026/10/20 19:21:40 阅读更多 →
免费开源 3D 打印切片软件 Bambu Studio:3 步出件,自动支撑、多色打印一次配齐

免费开源 3D 打印切片软件 Bambu Studio:3 步出件,自动支撑、多色打印一次配齐

免费开源 3D 打印切片软件 Bambu Studio&#xff1a;3 步出件&#xff0c;自动支撑、多色打印一次配齐 【免费下载链接】BambuStudio PC Software for BambuLab and other 3D printers 项目地址: https://gitcode.com/GitHub_Trending/ba/BambuStudio Bambu Studio 是一…

2026/10/20 19:21:40 阅读更多 →
SodaDownloader:汽水音乐链接解密提取FLAC/M4A的完整教程

SodaDownloader:汽水音乐链接解密提取FLAC/M4A的完整教程

简介&#xff1a;SodaDownloader是一款面向汽水音乐平台用户的便捷下载工具&#xff0c;只需复制分享链接即可解析歌曲信息&#xff0c;并支持FLAC无损音频和M4A高质量格式的解密与下载&#xff0c;让用户不进入平台也能获取高品质音乐文件。该源码工程压缩包共26个文件、仅72K…

2026/10/20 19:21:40 阅读更多 →

最新新闻

小橘子V4.790:本地可调试塔防策略模拟器

小橘子V4.790:本地可调试塔防策略模拟器

简介&#xff1a;本资源是《向僵尸开炮》游戏的自动化对局辅助工具——小橘子V4.790版本完整部署包&#xff0c;面向游戏AI开发者、自动化测试工程师及休闲游戏技术爱好者&#xff0c;用于快速实现人机对战环境下的策略执行、界面识别与操作模拟。压缩包共741个文件&#xff0c…

2026/10/20 20:42:25 阅读更多 →
Win11访问Win7共享报错0x80070035?SMB协议与网络配置修复指南

Win11访问Win7共享报错0x80070035?SMB协议与网络配置修复指南

1. 0x80070035 到底是什么&#xff1a;先搞清楚报错在哪里先把结论说在前面&#xff1a;这个错误码的意思是“找不到网络路径”。很多朋友升到 Win11 之后&#xff0c;双击网络里那台老 Win7 电脑的共享文件夹&#xff0c;直接弹一个红叉&#xff0c;错误码 0x80070035&#xf…

2026/10/20 20:42:24 阅读更多 →
LLM-as-Judge实战:大模型互评与自我批评提升生成质量

LLM-as-Judge实战:大模型互评与自我批评提升生成质量

做AI应用开发这段时间&#xff0c;我越来越频繁地遇到一个尴尬场景&#xff1a;模型生成的内容没人帮忙把关。人工一条条看&#xff0c;慢且贵&#xff0c;尤其是在批量评估几百条结果的时候&#xff0c;整个人都会被拖垮&#xff1b;用BLEU、ROUGE这类传统指标&#xff0c;又完…

2026/10/20 20:42:24 阅读更多 →
Win11访问Win7共享报错0x80070035?一文搞定SMB网络路径问题

Win11访问Win7共享报错0x80070035?一文搞定SMB网络路径问题

这个问题我前前后后帮人处理过不下二十次&#xff0c;多数是家里有老电脑、老 NAS 或者公司还有几台 Win7 机器没淘汰的场景。症状很统一&#xff1a;Win11 地址栏敲\\192.168.x.x&#xff0c;回车&#xff0c;等一两秒&#xff0c;弹窗直接甩一句“Windows 无法访问”&#xf…

2026/10/20 20:42:24 阅读更多 →
手写Master-Worker并发框架:线程安全设计与实战避坑

手写Master-Worker并发框架:线程安全设计与实战避坑

1. 从一次线上事故说起&#xff1a;为什么要自己造一个Master-Worker轮子去年帮一个做数据清洗的朋友排查问题&#xff0c;他们的服务在高峰期会偶发数据错乱——同一批任务被重复执行了两次&#xff0c;日志里却找不到任何异常。最后定位到根因&#xff1a;他们用线程池提交任…

2026/10/20 20:42:24 阅读更多 →
GNU M4 1.4.19 源码编译与 Autotools 构建实战指南

GNU M4 1.4.19 源码编译与 Autotools 构建实战指南

简介&#xff1a;m4-1.4.19.tar.gz 是 Linux 环境下经典宏处理器 m4 的官方源码发布包&#xff0c;面向需要理解 autoconf 构建机制、编写配置脚本或搭建轻量模板系统的开发者与运维人员。压缩包共 1670 个文件&#xff0c;约 2.82MB&#xff0c;以 558 个 C 源文件、268 个头文…

2026/10/20 20:41:20 阅读更多 →

日新闻

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

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

2026/10/20 1:01:30 阅读更多 →
ESP32舵机控制指南:原理、多路驱动与避坑实战

ESP32舵机控制指南:原理、多路驱动与避坑实战

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

2026/10/20 1:01:30 阅读更多 →
位移法实现一阶低通滤波:单片机ADC采样降噪实战

位移法实现一阶低通滤波:单片机ADC采样降噪实战

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

2026/10/20 1:01:30 阅读更多 →

周新闻

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

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

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

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

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

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

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

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

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

2026/10/20 2:50:50 阅读更多 →

月新闻

我发现了一个新思路:用 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/20 10:02:08 阅读更多 →
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/20 9:50:17 阅读更多 →
黑夜航拍船只数据集训练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/20 9:50:45 阅读更多 →