YALMIP资源下载与安装全指南:MATLAB路径配置、求解器接口与避坑实战

简介:YALMIP 官方 R20230609 版资源包,是面向 MATLAB 环境下运筹优化、自动控制及算法研究者的完整建模工具箱,可用来快速构建与求解线性规划、二次规划、混合整数规划、非线性规划以及动态最优控制问题。压缩包共 1307 个文件,以 1295 个 .m 主程序与辅助函数为主体,涵盖核心建模语法、约束构造、变量类型、求解器接口、预处理与后处理机制;其余 .txt、.mat、.yml、.c 文件分别提供说明文档、测试数据、运行配置与底层实现,便于按需查阅和扩展。整个资源仅 1.08MB,轻量且结构清晰。已有 1286 人学习/下载。读者可从中获得完整的 YALMIP 工具箱主体、常用第三方求解器适配接口以及示例测试脚本,既能从简单 LP/QP 开始逐步上手,也可深入探讨动态优化、灵敏度分析、随机优化与多目标优化等高级功能,适合不同层次的 MATLAB 优化开发者使用。

1. YALMIP 资源下载包:不是装完即用,而是接好一条求解链路

第一次接触 YALMIP 资源下载包的人,八成是从论文复现里看到这个名词:一段 MATLAB 代码用 sdpvar 声明变量、用 optimize 下发求解,全程没手写矩阵分解。YALMIP 是 MATLAB 环境下的优化建模工具箱,把线性规划、半定规划、混合整数规划统一收拢成几条声明与约束语句,是问题描述与底层求解器之间的翻译官。

不少搜索者以为拿到下载包就是装完即用,实际上它更像一套要自己接线的设备。真正值钱的不只是压缩包里那几个文件,而是搞清目录结构、路径设置、求解器接口之后,能用同一套语法稳定切换不同后端。这篇实操笔记按一线顺序讲清下载包放哪、怎么接进 MATLAB、怎么验证,以及五个高频翻车点。

适合人群很明确:复现论文卡在安装环节的研究生、想引入这套建模框架做原型验证的工程师,以及被"下载了却用不了"劝退的入门者。读完你会得到一条可复现路径,而不是玄学安装步骤。

2. 拆开下载包看架构:YALMIP 为什么能把建模与求解解耦

先说一个反直觉的结论:YALMIP 资源下载包里没有任何代码负责真正的数值计算。它做的是建模、转换和调度,重活全部交给下游求解器。把这个边界划清楚,后面遇到的大部分安装报错都能自己定位。

下载包这个关键词容易让人误以为它是一个完整求解环境,实际它更像一个接线板:插头是你写的优化模型,电器是求解器。理解这个架构之后,你再看它的目录就不会觉得乱。

2.1 直接调求解器的痛:为什么要有一层"翻译官"

假设要手工求解一个半定规划,传统流程是先把问题化成标准形式:构造目标矩阵、约束矩阵和右端项,再把这些数据结构填进求解器接口。三五个约束还能应付,到了十几个约束、变量本身还是矩阵结构的场景,手填下标基本就是灾难。更麻烦的是换求解器:格式要全部重写,调试一整天起步。早期做控制理论研究的人,相当一部分时间就耗在这种重复劳动上,这也是 YALMIP 这类建模工具出现的直接原因——它把这一层体力活标准化了。

YALMIP 的具体做法是引入符号决策变量。sdpvar 声明的变量在求解前不绑定数值,你可以对它们做线性组合、求迹、取对数,可以写矩阵不等式;YALMIP 把这些操作维护成一棵表达式树,等 optimize 真正下发的时刻,再按目标求解器的标准格式做转换。于是同一个模型,在不同求解器之间切换只需要改一行配置。你写的模型不再属于某个求解器,而是属于问题本身。

这个"先建模、后下发"的架构,决定了包内必然存在两条线:一条是符号引擎,负责变量、约束对象和表达式求值;另一条是接口层,负责把统一模型翻译成特定求解器的输入格式。很多人安装时只检查主函数能不能用,忽略了接口层与本地环境的匹配,这是后面几乎所有安装类报错的共同根源。

2.2 下载包内部的关键角色:类目录、接口层与辅助脚本

把压缩包解开,第一眼会看到一堆以 @ 开头的目录。在 MATLAB 里这是类文件夹,是整个符号语法能工作的根基。这些角色可以用一张表说清楚:

目录或文件在建模链路里的角色
根目录顶层函数(yalmip.m 等)入口命令、缓存清理与版本信息
@sdpvar、@constraint 等类目录符号变量与约束对象的类型定义和运算符重载
求解器接口目录把统一模型转换成各求解器认识的标准输入
示例与辅助脚本演示用法,帮助理解参数语义

类文件夹的名字必须保留原名,不能为了好看去改。类方法能否被正常调用,完全依赖 MATLAB 的类目录机制,一旦移动或改名,构造函数立刻失效,报错还经常是"未定义函数或变量"这种与直觉相反的信息。这就是为什么教程反复强调用 genpath 递归加路径:只加根目录时 which yalmip 是正常的,但 sdpvar 用不了,让人百思不得其解。

目录解压的位置同样有讲究。有人图省事直接把包解进 MATLAB 安装目录内部,看似路径不用配了,实则埋雷。MATLAB 大版本升级时会对内置目录做扫描和重置,第三方文件混在中间,很容易出现路径优先级上的诡异冲突。我一般单独建一个第三方工具箱目录,解压后整棵目录树有据可查,备份回滚都是一条命令的事。

2.3 多数人缺的不是 YALMIP 本体,而是求解器后端

"资源下载包"这个搜索词背后,真实常见的情景是:包也解压了,路径也加了,一跑却提示找不到可用求解器。这不是包坏了,而是机器上没有任何求解器。YALMIP 只负责把模型翻译成标准形式,真正做迭代计算的是求解器。它刻意不捆绑求解器,为的是保持前端工具的中立性,代价就是新用户必须先补齐后端。

常见的可靠做法是:先装一个开源免费求解器,把它的目录也加入 MATLAB 路径,再重跑 yalmiptest 确认接口被识别。选择依据是问题类型——只解线性规划,一个基础求解器就够;涉及半定规划,必须选支持半定约束的;混合整数规划则需要支持分支定界机制的求解器。拿名气去选不如拿问题特征去选。等前端和后端组装到一起,这个下载包才真正变成能出数值结果的工具链。

3. 把资源包接进 MATLAB:路径配置与最小验证

YALMIP 没有安装程序,属于典型的"绿色工具箱"。安装的本质工作只有一个:让 MATLAB 的搜索路径覆盖下载包的所有目录。把这句话记住,后面所有路径类报错都能自己推导出答案,不用到处问人。

3.1 目录规划:给第三方工具箱一个固定位置

我通常会在工作区建一个专门的第三方工具箱目录,所有这类下载来的工具箱都放同一个地方,不跟业务代码混在一起。好处很明显:备份时一条命令打包,出问题时整体移除,换新版本时目标明确,不会出现"这个文件夹到底是不是正在用的"这种灵魂拷问。

mkdir -p ~/tools/third_party unzip yalmip-download.zip -d ~/tools/third_party

Windows 用户用解压软件或 PowerShell 的 Expand-Archive 完成同样操作。解压完先看一眼目录结构,如果出现 yalmip/yalmip 这样的双层嵌套,说明压缩包内层还有一个同名顶层目录,先整理成单层根目录再进行下一步。这一步往往决定了后面路径配置是对是错,别急着往下走。

3.2 路径配置:addpath、genpath 与 savepath 的配合

% 递归添加 YALMIP 根目录到搜索路径 addpath(genpath('D:\tools\third_party\yalmip')); % 持久化保存,下次启动 MATLAB 依然有效 savepath; % 验证入口函数是否可见 which yalmip

参数说明:genpath 的关键是递归,它把根目录下所有子目录展开后一次性加入路径。YALMIP 的核心功能大量放在 @ 开头的类目录里,只加根目录会漏掉这些类目录,sdpvar、constraint 等构造函数全部不可见。savepath 把当前路径写入启动配置文件,但在某些环境下会因写权限失败;报错时先检查当前用户对该配置文件所在目录的写权限,受限时可以在 MATLAB 启动脚本里加 addpath 语句,效果等同。which yalmip 能返回完整路径,是安装通过的第一个标志,但不是全部。

3.3 最小验证:清缓存、测接口、看报告

% 清掉 YALMIP 内部缓存,换路径或换版本后必须执行 yalmip('clear'); % 运行自带的测试套件,检查各求解器接口 yalmiptest

逻辑说明:yalmip('clear') 重置 YALMIP 内部状态,特别是路径变更之后残留的旧变量定义,不清理会出现难以复现的诡异报错。yalmiptest 会依次跑若干类最小测试问题,并在输出里报告每个问题对应的求解器接口状态。看结果时别盯着"失败"两个字直接崩溃,要分类看:大面积失败大概率是路径或求解器缺失;只有半定规划、混合整数那几项失败,说明当前求解器的能力覆盖不全,需要换支持对应问题类型的后端。这一步通过之后,安装环节才算真正结束。

4. 用下载包的语法跑通三类问题:LP、SDP 与 MILP 最小模板

路径接好只是入场券,能不能用顺手取决于建模语法是否熟练。下面三张模板覆盖了 YALMIP 最主流的应用场景,新项目开工时可以直接抄,改改变量和约束就变成你自己的模型。

4.1 LP:线性规划的最小模板

% 声明决策变量:2 行 1 列的实数符号向量 x = sdpvar(2, 1); % 目标函数:f = x1 + 2*x2 objective = x(1) + 2*x(2); % 约束:x1 + x2 >= 1,且 x 各分量非负 constraints = [x(1) + x(2) >= 1, x >= 0]; % 求解:最小化 objective,返回求解状态 optimize(constraints, objective); % 提取数值解 value(x)

逻辑说明:sdpvar(2,1) 生成一个二行一列的符号向量,默认类型是连续实数。constraints 用方括号把多个不等式拼接成一个约束数组,这是 YALMIP 里最常见的组合方式。optimize 默认做最小化,第一个参数传约束集合,第二个参数传目标表达式。value(x) 在求解完成后把符号变量替换成数值向量;不调用 value,x 永远保持符号状态——不少新手在这里直接打印 x,看到一堆符号表达式,以为求解失败了,实际上只是没取数值。

模型里没有二次项、没有整数变量,YALMIP 会自动识别为线性规划并走对应的求解路径。如果你还需要目标函数对应的对偶变量,可以用 dual(constraints) 取回拉格朗日乘子,这是做敏感性分析时很常用的手段。

4.2 SDP:矩阵变量与半定约束的正确写法

% 声明 2x2 对称矩阵符号变量 X = sdpvar(2, 2, 'symmetric'); % 半定约束与等式约束:X >= 0 且迹等于 1 constraints = [X >= 0, trace(X) == 1]; % 最小化 -logdet(X),等价于最大化 log det(X) optimize(constraints, -logdet(X)); % 查看最优 X value(X)

参数说明:sdpvar 的第三个参数传 'symmetric',YALMIP 就把 X 当作对称矩阵处理,内部只保留上三角元素,避免重复自由变量拖慢求解。这里的 X >= 0 在矩阵变量下是半定约束,含义是 X 的特征值全部非负——这是一个经常被误解的语法点,它不等于逐元素大于零。想要逐元素非负,必须显式写 X(:) >= 0,两者语义完全不同,混用会让模型面目全非。

logdet 是 YALMIP 内置算子,专门处理半定规划里的对数行列式目标。它会自动对模型做重构以保证凸性,这块也正是手写标准形式时最容易出错、最耗时间的部分。用 YALMIP 写这类问题的体验,跟手填矩阵相比基本是降维打击。

4.3 MILP:离散变量用 binvar

% 3 个 0/1 变量,3 个连续变量 x = binvar(3, 1); y = sdpvar(3, 1); % 约束:y 落在 [0, 10*x],x=0 时强制 y=0 constraints = [y >= 0, y <= 10*x, sum(y) == 5]; % 最大化 y 的总和,写成最小化 -sum(y) objective = -sum(y); % 求解,让 YALMIP 自动选择支持混合整数的求解器 optimize(constraints, objective);

逻辑说明:binvar 生成 0/1 离散变量,intvar 生成一般整数变量,与 sdpvar 的唯一区别就在变量类型。混合整数问题对求解器能力要求更高,如果当前环境没有支持分支定界的求解器,optimize 会直接报错而不会退化成连续求解。这个"宁可报错也不静默降级"的行为,比某些自动忽略整数约束的做法安全得多。

约束里的 y <= 10*x 是典型的 big-M 写法,10 是业务上给出的上界。M 值要按实际问题取合理上界,不是越大越安全——过大的 M 会显著恶化数值条件,导致分支定界过程反复震荡,求解时间成倍上涨。

4.4 参数下发:sdpsettings 是唯一入口

% 自动选择求解器,关闭冗长输出,开启诊断信息 options = sdpsettings('solver', '', 'verbose', 0, 'debug', 1); % 用两个返回值接收:sol 是求解状态,diagnostic 是诊断信息 [sol, diagnostic] = optimize(constraints, objective, options); % 状态码为 0 表示求解成功 if sol.problem ~= 0 disp(diagnostic.info); end

参数说明:sdpsettings 返回一个结构体,集中管理所有求解参数。solver 字段传空字符串表示自动探测合适求解器;手动指定求解器名可以锁定求解环境,复现论文结果时一般都会锁,防止不同求解器算法差异造成数值对不上。verbose 控制命令行输出量,调试阶段设 1,批量跑实验设 0,否则日志文件会迅速膨胀。debug 置 1 时,一旦求解器返回不可行或异常,YALMIP 会额外输出约束层面的分析信息,这是排查不可行模型最直接的工具。

注意 options 必须放在 optimize 的第三个参数位置,漏传等于所有设置没生效。这个错误很隐蔽,因为代码不报错,只是行为不对。

5. YALMIP 安装与使用避坑指南:五个高频翻车现场

下面五条按真实出现频率排序,前两条集中在安装环节,后三条集中在建模环节。每一条我都见过至少一次,其中一条自己也贡献过。

5.1 which yalmip 能找到,但 sdpvar 报未定义函数

现象:完成路径配置后,which yalmip 能正常返回路径,可是一运行 sdpvar,MATLAB 直接报未定义函数或变量。

原因:路径只加到了根目录,没有递归覆盖以 @ 开头的类目录。yalmip.m 在根目录所以可见,但 sdpvar 的构造函数定义在 @sdpvar 类目录里,这个目录没进搜索路径。

解决:改用 genpath 递归添加,再刷新缓存。

addpath(genpath('D:\tools\third_party\yalmip')); savepath; rehash toolboxcache;

这个坑的隐蔽点在于入口函数可见,给人"安装成功"的错觉。判断安装是否完成,标准是 sdpvar、constraint 这类符号函数的可见性,而不是 which yalmip 的输出。

5.2 optimize 报错:找不到任何可用的求解器

现象:第一次跑 optimize,命令行提示找不到合适的求解器,但 YALMIP 本身工作正常,yalmiptest 也能运行。此时黑匣子感觉最强,最容易让人怀疑是包的问题。

原因:机器上只有 YALMIP,没有任何求解器;或者装的求解器与当前 MATLAB 版本不兼容,在接口探测阶段就被过滤掉了。

解决:安装一个开源免费求解器,加入路径后重新运行 yalmiptest,确认对应测试项从失败变通过。如果接口仍不被识别,检查求解器位数与 MATLAB 位数是否一致,同时确认它要求的 MATLAB 版本范围。这里要认清一个事实:YALMIP 下载包不捆绑任何求解器是设计使然,新用户必须自己补齐后端。

5.3 约束方向没写错,但结果和论文差几个数量级

现象:公式能和论文对上,跑出来的最优值却完全不同,甚至符号都不对,反复核对也看不出问题。

原因:矩阵变量下的 X >= 0 实际是半定约束,却被当成了逐元素非负;或者不等号方向与预期理解反了。前者直接把约束集合换掉,后者会让对偶解完全跑偏。

解决:用 value 取出解后,再调用 check 看约束残差。

residuals = check(constraints);

check 会在当前解上逐条计算残差,残差数量级明显异常的那条约束就是重点怀疑对象。同时确认变量声明方式:sdpvar(2,2,'symmetric') 下 X >= 0 是半定约束;想表达逐元素非负,显式写 X(:) >= 0。这两个写法语义完全不同,混用的结果就是模型对、约束错、数值自然对不上。排查这个问题的思路是:先怀疑约束语义,再怀疑求解器精度,顺序别反。

5.4 MATLAB 升级后,旧脚本开始莫名报错

现象:同一个资源包,MATLAB 大版本升级之后,前一天能跑的脚本开始抛错,报错信息指向一个以前没注意过的函数。

原因:新版本 MATLAB 自带功能与 YALMIP 部分函数重名,路径搜索顺序导致覆盖;或者 YALMIP 版本太旧,使用了新环境已移除的旧版 API。

解决:先执行 yalmip('clear') 清理内部缓存,再用 which 查看冲突函数实际来自哪个目录。如果确认是旧 API 问题,升级 YALMIP 资源包,并把代码里的旧式入口调用替换为当前版本的 optimize 写法。换包之后必须重新 addpath(genpath(...))——只替换文件不更新路径,等于没换,这是最容易犯的遗漏。

5.5 解压出 yalmip/yalmip 双层嵌套,路径怎么配都别扭

现象:解压后看到两层同名目录,加入路径后测试时好时坏,有些功能能用,有些功能随机报错。

原因:压缩包内有同名顶层目录,解压时与本地目录合并产生了嵌套;或者解压软件选择"解压到当前文件夹"时多生成了一层。

解决:先整理成单一根目录。

mv ~/tools/third_party/yalmip/yalmip ~/tools/third_party/

确认最终只有一条目录包含 yalmip.m 主文件,然后重新 addpath(genpath(...)),并运行 yalmip('clear') 重测。这个坑的隐蔽点在于 which yalmip 能返回内层路径,给人"路径没问题"的假象,但其他类目录的映射已经错位,报错随机且难复现,看起来像玄学,本质上就是目录结构问题。

6. 把资源包用出效率:三个建模习惯与版本管理

安装只是开始,真正省时间的是后面的建模习惯。第一个习惯是调试不可行模型时先赋值再看残差,而不是反复改约束重跑 optimize 碰运气:

% 给变量赋一个试探性的可行点 assign(x, [1; 1]); % 在该点下逐条检查约束残差 check(constraints);

assign 把符号变量临时替换成数值,check 在这个点上计算每条约束的违反程度。哪条约束把模型逼近不可行,一眼就能定位,比盲目重跑高效得多。排查不可行问题时,这个组合拳比任何日志都直观。

第二个习惯是锁定求解环境。复现论文或对拍结果时,把 sdpsettings 写进脚本开头并指定求解器,别依赖默认自动选择——两个求解器之间的算法差异,足以让对比实验得出完全相反的结论。批量实验时把 verbose 设 0,日志从几百行缩成几行,跑批速度也有肉眼可见的提升。

第三个习惯是资源包的版本管理。目录命名带上日期,旧版本整体改名备份而不是覆盖;换版本按固定顺序执行:备份旧目录、解压新包、更新路径、yalmip('clear')、rehash toolboxcache、yalmiptest。顺序一乱,最常见的结果就是新旧文件混在同一个类目录里,报错随机到你怀疑人生。

我自己就吃过这个亏。有一回为了省事,把两个版本混在同一个目录里,某天所有约束开始间歇性报错,排查了整整一个晚上,最后发现是 @sdpvar 类目录被旧文件覆盖了一半。从那以后,我装任何第三方工具箱都先建独立目录、再记录版本日期,宁可多敲两行命令,也不把时间浪费在路径和目录的随机性上。希望帮到你。

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

相关新闻

51单片机智能交通灯:车流感知与自适应配时实现

51单片机智能交通灯:车流感知与自适应配时实现

简介&#xff1a;本资源是一套完整的智能交通灯控制器嵌入式开发实践包&#xff0c;面向电子类、自动化及物联网方向的本科课程设计、毕业设计与单片机初学者&#xff0c;解决交通信号系统动态调度算法实现与软硬件联合验证问题。压缩包共17个文件&#xff0c;86KB&#xff0c;…

2026/10/20 10:05:47 阅读更多 →
dart_scope_functions鸿蒙适配实践:Dart作用域函数在Flutter中的迁移全解析

dart_scope_functions鸿蒙适配实践:Dart作用域函数在Flutter中的迁移全解析

先提个问题&#xff1a;你写 Flutter 代码时&#xff0c;有没有经历过这种“工具人时刻”——定义一个对象&#xff0c;判空&#xff0c;取值&#xff0c;塞进构造器&#xff0c;再判空&#xff0c;再赋值……一个本该两行说完的逻辑&#xff0c;硬生生被样板代码撑出十行。想用…

2026/10/20 10:05:47 阅读更多 →
AIGC检测原理与论文写作重构:告别降AI工具,建立真实作者性

AIGC检测原理与论文写作重构:告别降AI工具,建立真实作者性

最近总有人拿着检测报告截图来问我&#xff1a;论文AIGC疑似比例飙到六成以上&#xff0c;学校通知延期&#xff0c;怎么办&#xff1f;说实话&#xff0c;看到这种局面我心里也替人着急&#xff0c;但更着急的是&#xff0c;很多人的第一反应是冲去找“去AI痕迹神器”&#xf…

2026/10/20 10:04:46 阅读更多 →

最新新闻

VS2019快速集成wxWidgets二进制包实战指南

VS2019快速集成wxWidgets二进制包实战指南

1. 项目概述&#xff1a;为什么“直接使用二进制文件”是wxWidgets开发中最常被卡住的第一关 在Visual Studio 2019环境下配置wxWidgets&#xff0c;绝大多数人踩进的第一个坑&#xff0c;不是代码写错&#xff0c;也不是逻辑出问题&#xff0c;而是——连编译都过不去。你下载…

2026/10/20 11:33:30 阅读更多 →
AI芯片设计黑盒困局:从不可解释到可控黑盒的工程实践

AI芯片设计黑盒困局:从不可解释到可控黑盒的工程实践

“AI 在芯片领域依然是个黑盒。”这句话不是我从某篇报告里抄来的&#xff0c;是我在上一个流片项目的复盘会上&#xff0c;被自己的算法同事一句一句追问出来的。当时我们上线了一个辅助布局优化的AI模型&#xff0c;指标提升很漂亮&#xff0c;可一旦被问到“为什么这几百个标…

2026/10/20 11:33:30 阅读更多 →
HTC Vive OpenVR 配置避坑指南:SDK 1.25.4 + SteamVR 1.26.4 黄金组合

HTC Vive OpenVR 配置避坑指南:SDK 1.25.4 + SteamVR 1.26.4 黄金组合

简介&#xff1a;本资源是面向VR开发初学者与进阶者的OpenVR实战入门项目&#xff0c;聚焦HTC Vive设备的API调用与Tracker扩展应用&#xff0c;解决开发者在跨平台VR交互开发中接口适配难、追踪数据解析复杂等实际问题。压缩包共9个文件&#xff0c;含4个核心Python脚本&#…

2026/10/20 11:33:30 阅读更多 →
Llama 3 精读:FP8 量化与长上下文实测经验分享

Llama 3 精读:FP8 量化与长上下文实测经验分享

1. 为什么值得花时间精读 Llama 3Llama 3 发布之后&#xff0c;我身边不少做推理部署和模型微调的朋友都在第一时间拉取了权重做实测。大家最关心的其实不是榜单上的分数&#xff0c;而是两个非常实际的问题&#xff1a;第一&#xff0c;这个模型在FP8 量化之后精度到底掉多少&…

2026/10/20 11:33:30 阅读更多 →
腾讯广告回收业务推广类目梳理:可投品类、禁投品类及资质要点

腾讯广告回收业务推广类目梳理:可投品类、禁投品类及资质要点

前言很多再生资源、回收行业的从业者&#xff0c;会选择腾讯广告&#xff08;朋友圈、视频号、腾讯新闻等流量位&#xff09;来收集 B 端企业或 C 端散户的业务咨询信息。但回收类目细分多、监管差异大&#xff0c;不少商家开户后遇到广告拒审、计划下架、账户限流等问题。多数…

2026/10/20 11:33:30 阅读更多 →
专科生论文降AI率实战指南:九款降AIGC工具测评与避坑要点

专科生论文降AI率实战指南:九款降AIGC工具测评与避坑要点

最近后台问得最多的不是论文怎么写&#xff0c;而是“论文写完了AI率太高怎么办”。很多专科生现在交课程论文、毕业设计、实习报告之前&#xff0c;都要先跑一遍AIGC检测&#xff0c;结果一出来就慌了&#xff1a;明明是自己查阅资料写的初稿&#xff0c;只是用AI帮忙润了润色…

2026/10/20 11:32:30 阅读更多 →

日新闻

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 阅读更多 →