HaoCurve曲线拟合实战:从最小调用到批处理与不确定度估计

简介:HaoCurve(薅曲线)是一款面向科研人员、工程师与数据分析者的开源曲线绘制工具,基于MATLAB环境运行,主要用于快速创建、编辑和分析各类数据曲线,适合需要将实验或计算结果可视化呈现的初中级用户。资源包共3个文件,包含1个m脚本、1个mat数据文件和1个p文件,压缩包约161KB,其中m文件为曲线绘制主程序,mat文件提供示例数据,p文件为预编译函数,解压后即可在MATLAB中调用运行。目前已有1602人学习下载,说明其在数据图形化场景中具有一定实用价值。借助该源码,读者可掌握曲线颜色、线型、标记样式及坐标轴范围、刻度、标签等视觉元素的自定义方法,并参考示例数据理解参数输入与命令结构,进而将其应用于物理波动描绘、经济指标趋势展示、生物医学实验数据分析等场景;源码开放也便于进阶用户二次开发与性能优化。

1. 曲线拟合工具链里,HaoCurve 到底卡在哪个位置

做实验数据处理的人大概率都遇到过这种场景:示波器导出一组电压-时间序列,传感器回传一批温度-湿度采样点,或者仿真软件吐出一堆离散坐标,你需要从这些散点里反推出一条光滑的、可微的、能外推的曲线。Excel 的 trendline 太糙,MATLAB 的 cftool 交互式操作没法批量化,Python 的 scipy.optimize.curve_fit 又要求你自己写模型函数、猜初值、处理不收敛。HaoCurve(薅曲线)就是在这个缝隙里被反复搜出来的一个方案——它把曲线拟合的常见模型封装成可调用的接口,核心文件是 Haocurve.m,配套源码让使用者能改模型、换权重、调迭代策略。

这个标题背后真正的问题是:当你手里有一堆脏数据、需要一个能跑通、能调参、能看中间过程的拟合工具时,HaoCurve 能不能用、怎么用、参数怎么设、哪里容易翻车。适合的人群很明确:做信号处理、传感器标定、实验数据建模的工程师和学生,尤其是那些不想从零推导 Levenberg-Marquardt 算法、但又需要比黑箱工具更多控制权的人。接下来的内容按“先跑通最小例子、再拆参数、再排坑、最后讲进阶”的顺序展开,每一步都落到可复现的操作上。

2. 把 Haocurve.m 跑起来:从最小调用到拟合结果可视化

2.1 先确认运行环境和文件依赖

HaoCurve 的核心是一个 .m 文件,这意味着它天然运行在 MATLAB 或兼容环境中。如果你用的是 MATLAB R2016b 之后的版本,直接调用没问题;如果用 Octave,需要注意部分绘图函数和优化工具箱的差异。常见做法是把 Haocurve.m 放在当前工作目录或者添加到路径里,然后准备两组数据:自变量 x 和因变量 y,都是列向量。

在动手之前,先检查三件事:第一,数据里有没有 NaN 或 Inf,拟合算法对缺失值极其敏感,一个 NaN 就能让整个迭代返回空结果;第二,x 是否单调,虽然多数拟合不要求单调,但如果你要做插值型拟合,乱序的 x 会导致结果不可复现;第三,y 的量级是否和 x 差了几个数量级,量级差异过大会让雅可比矩阵条件数爆炸,表现为迭代次数拉满但残差几乎不降。

% 检查数据质量:缺失值、量级、单调性 x = [0.1; 0.5; 1.2; 2.0; 3.1; 4.5; 6.0; 8.2; 10.5]; y = [2.3; 2.1; 1.8; 1.5; 1.2; 0.9; 0.7; 0.5; 0.4]; assert(~any(isnan(x)) && ~any(isnan(y)), '数据中存在 NaN'); assert(~any(isinf(x)) && ~any(isinf(y)), '数据中存在 Inf'); fprintf('x 范围: [%.2f, %.2f], y 范围: [%.2f, %.2f]\n', ... min(x), max(x), min(y), max(y));

这段代码做的是拟合前的数据体检。assert 在条件不满足时直接报错,避免脏数据进入拟合流程后出现难以定位的异常。fprintf 打印范围是为了让你对量级有个直观判断——如果 x 在 0.001 量级而 y 在 1000 量级,后面就需要考虑归一化。

2.2 最小调用:一条命令完成拟合与绘图

HaoCurve 的设计思路是默认参数就能跑出一个合理结果,不需要你先写模型函数。常见调用形式是传入 x、y 和模型类型字符串,返回拟合参数、拟合曲线句柄和残差统计。

% 最小调用:指数衰减模型拟合 [x, y] = prepareData(); % 假设已有数据准备函数 [params, yFit, stats] = Haocurve(x, y, 'expdecay'); % 输出拟合参数和拟合优度 fprintf('拟合参数: a=%.4f, b=%.4f, c=%.4f\n', params(1), params(2), params(3)); fprintf('R-square: %.6f, RMSE: %.6f\n', stats.rsquare, stats.rmse); % 绘图对比原始数据和拟合曲线 figure; plot(x, y, 'ko', 'MarkerFaceColor', 'k', 'DisplayName', '原始数据'); hold on; plot(x, yFit, 'r-', 'LineWidth', 1.5, 'DisplayName', 'HaoCurve 拟合'); xlabel('自变量'); ylabel('因变量'); legend('Location', 'best'); grid on; title(sprintf('HaoCurve 拟合结果 (R^2=%.4f)', stats.rsquare));

这里的关键参数是第三个入参'expdecay',它告诉 Haocurve.m 用指数衰减模型去匹配数据。返回的 params 是模型系数向量,yFit 是拟合曲线在原始 x 上的取值,stats 里通常包含 R-square、调整 R-square、RMSE 和迭代次数。绘图部分把原始散点和拟合曲线叠在一起,R-square 直接标在标题上,方便快速判断拟合质量。

2.3 换模型:从指数衰减到多项式和高斯

HaoCurve 的价值在于模型可切换。常见的内置模型包括多项式、指数、高斯、幂律和 Logistic。切换模型只需要改第三个参数,但要注意不同模型对初值的敏感度完全不同。

% 多项式拟合:指定阶数 [paramsPoly, yFitPoly, statsPoly] = Haocurve(x, y, 'poly', 'Order', 3); % 高斯拟合:适合峰值型数据 [paramsGauss, yFitGauss, statsGauss] = Haocurve(x, y, 'gauss', 'NumPeaks', 1); % 对比三种模型的 RMSE models = {'expdecay', 'poly3', 'gauss1'}; rmseVals = [stats.rmse, statsPoly.rmse, statsGauss.rmse]; for i = 1:length(models) fprintf('模型 %s 的 RMSE: %.6f\n', models{i}, rmseVals(i)); end

多项式拟合通过'Order'指定阶数,阶数越高拟合越灵活但过拟合风险越大。高斯拟合通过'NumPeaks'指定峰的数量,单峰数据用 1,多峰数据需要根据峰个数调整。对比 RMSE 是选模型的直接依据,但不要只看 RMSE——高阶多项式 RMSE 可能更低,但在数据两端会出现剧烈振荡,这就是过拟合的典型表现。

2.4 参数调优:权重、迭代上限和收敛容差

默认参数适合干净数据,但真实数据往往有离群点或者不同区域精度要求不同。HaoCurve 通常支持传入权重向量、最大迭代次数和收敛容差。

% 带权拟合:给中间区域更高权重 w = ones(size(x)); w(x > 2 & x < 8) = 5; % 中间段权重设为 5 [paramsW, yFitW, statsW] = Haocurve(x, y, 'expdecay', ... 'Weights', w, ... 'MaxIter', 500, ... 'TolFun', 1e-10, ... 'Display', 'iter'); fprintf('加权拟合 RMSE: %.6f, 迭代次数: %d\n', statsW.rmse, statsW.iterations);

'Weights'控制每个数据点对残差的贡献,权重越大拟合越倾向于穿过该点。'MaxIter'设 500 是给复杂模型留余量,简单模型通常几十次就收敛。'TolFun'是函数容差,设到 1e-10 属于比较严格的要求,如果数据噪声大,设这么小会导致迭代不收敛,此时应该放宽到 1e-6 或 1e-8。'Display'设为'iter'会打印每次迭代的残差,方便观察收敛过程——如果残差在几次迭代后就不动了,说明已经到局部最优,再增加迭代次数也没用。

3. 拟合不收敛、结果离谱?先排查这四类问题

3.1 初值猜得太远导致迭代发散

现象:调用 Haocurve 后返回空参数或者参数值大得离谱,拟合曲线完全偏离数据。原因:非线性最小二乘对初值敏感,如果默认初值离真实值太远,雅可比矩阵近似失效,迭代步长失控。解决:先用肉眼估计参数范围,通过'StartPoint'传入初值。比如指数衰减的幅度大概在 y 的最大值附近,衰减常数大概在 x 范围的 1/3 到 1/2。

% 手动指定初值:幅度取 y 最大值,衰减常数取 x 范围的 1/4 p0 = [max(y), (max(x)-min(x))/4, min(y)]; [params, yFit, stats] = Haocurve(x, y, 'expdecay', 'StartPoint', p0);

3.2 数据量级差异过大导致数值不稳定

现象:拟合能跑完,但 R-square 很低,残差分布有明显规律。原因:x 和 y 量级差太多,比如 x 在 1e-3 而 y 在 1e3,优化算法在计算梯度时数值精度丢失。解决:先归一化再拟合,拟合完把参数反归一化回去。

% 归一化到 [0,1] 区间 xNorm = (x - min(x)) / (max(x) - min(x)); yNorm = (y - min(y)) / (max(y) - min(y)); [paramsNorm, ~, statsNorm] = Haocurve(xNorm, yNorm, 'expdecay'); % 反归一化参数需要根据具体模型推导,这里仅示意流程 fprintf('归一化后 R-square: %.6f\n', statsNorm.rsquare);

3.3 离群点把拟合曲线拽偏

现象:大部分点拟合得很好,但曲线在某个区域明显被一两个点拉偏。原因:最小二乘对离群点敏感,一个远离主体的点能产生巨大残差,优化算法会牺牲整体拟合去迁就它。解决:用稳健拟合选项,或者手动降权。

% 稳健拟合:自动降低离群点权重 [paramsRobust, yFitRobust, statsRobust] = Haocurve(x, y, 'expdecay', ... 'Robust', 'on', 'RobustWgtFun', 'bisquare');

'Robust'设为'on'启用稳健拟合,'RobustWgtFun'选'bisquare'是常见做法,它对残差大的点给低权重。注意稳健拟合的迭代次数通常更多,'MaxIter'要相应调大。

3.4 模型选错:用多项式拟合指数衰减

现象:R-square 看起来还行,但外推时曲线走势完全不对。原因:多项式在数据范围内能逼近任何形状,但范围外会快速发散,而指数衰减的物理意义是趋于常数。解决:根据数据背后的物理规律选模型,不要只看拟合优度。如果数据明显趋于一个非零常数,用指数模型;如果数据是周期性的,用傅里叶模型;如果数据是单调递增且增速递减,用幂律或对数模型。

4. 把 HaoCurve 嵌进批处理流程:循环拟合与结果导出

4.1 批量拟合多组数据的循环写法

单次拟合只是验证,实际工作中往往有几十上百组数据需要同样处理。常见做法是把数据存在 cell 数组或结构体里,循环调用 Haocurve,把参数和统计量存到表格里。

% 假设 dataCell 是 1xN 的 cell,每个元素是一组 [x, y] results = table(); for k = 1:length(dataCell) xy = dataCell{k}; x = xy(:,1); y = xy(:,2); try [params, ~, stats] = Haocurve(x, y, 'expdecay', 'Display', 'off'); results.FileIndex(k) = k; results.Param1(k) = params(1); results.Param2(k) = params(2); results.RSquare(k) = stats.rsquare; results.RMSE(k) = stats.rmse; catch ME warning('第 %d 组数据拟合失败: %s', k, ME.message); results.FileIndex(k) = k; results.Param1(k) = NaN; results.RSquare(k) = NaN; end end writetable(results, 'fitting_results.csv');

这段代码的关键是 try-catch:批量处理时总有个别数据因为质量太差导致拟合失败,不能让整个循环中断。失败时记录 NaN 并继续,最后统一导出 CSV。'Display'设为'off'是为了避免控制台被迭代信息刷屏。

4.2 拟合结果的可视化质检

批量拟合完不能只看数字,必须抽检几条曲线。常见做法是随机选几组,把原始数据和拟合曲线画在一起,人工确认没有系统性偏差。

% 随机抽检 4 组数据 idx = randperm(length(dataCell), min(4, length(dataCell))); figure('Position', [100, 100, 1200, 800]); for i = 1:length(idx) subplot(2, 2, i); xy = dataCell{idx(i)}; x = xy(:,1); y = xy(:,2); [~, yFit, stats] = Haocurve(x, y, 'expdecay', 'Display', 'off'); plot(x, y, 'ko', 'MarkerSize', 4); hold on; plot(x, yFit, 'r-', 'LineWidth', 1.2); title(sprintf('组 %d: R^2=%.4f', idx(i), stats.rsquare)); grid on; end

抽检时重点看三处:数据两端拟合曲线是否合理延伸、残差是否有周期性规律、R-square 低于 0.9 的组是否需要单独处理。

4.3 参数敏感性分析:扰动初值看结果稳不稳

拟合参数是否可信,一个简单判据是扰动初值后参数变化大不大。如果初值稍微一变,拟合参数就跳变,说明数据对模型的约束不够,结果不可靠。

% 初值扰动测试:对同一组数据跑 10 次,每次初值加随机扰动 baseP0 = [max(y), (max(x)-min(x))/4, min(y)]; paramHistory = zeros(10, 3); for trial = 1:10 p0 = baseP0 .* (1 + 0.1 * randn(1, 3)); % 10% 随机扰动 [params, ~, ~] = Haocurve(x, y, 'expdecay', 'StartPoint', p0, 'Display', 'off'); paramHistory(trial, :) = params; end fprintf('参数标准差: %.4f, %.4f, %.4f\n', std(paramHistory, 0, 1));

如果参数标准差超过参数均值的 10%,说明拟合结果对初值敏感,需要检查数据质量或者换更简单的模型。

5. 进阶技巧:自定义模型函数与拟合结果的不确定度估计

HaoCurve 内置模型覆盖了常见场景,但遇到非标准模型时,需要自己写模型函数并传给 Haocurve。常见做法是定义一个函数句柄,接受参数向量和自变量,返回预测值。

% 自定义模型:双指数衰减 modelFun = @(p, x) p(1)*exp(-p(2)*x) + p(3)*exp(-p(4)*x) + p(5); p0 = [max(y), 1, max(y)/2, 0.1, min(y)]; [paramsCustom, yFitCustom, statsCustom] = Haocurve(x, y, 'custom', ... 'ModelFun', modelFun, 'StartPoint', p0, 'MaxIter', 1000); % 用雅可比矩阵估计参数协方差 if isfield(statsCustom, 'Jacobian') J = statsCustom.Jacobian; dof = length(y) - length(paramsCustom); mse = statsCustom.rmse^2; covParams = mse * inv(J' * J); stdParams = sqrt(diag(covParams)); fprintf('参数估计值 ± 标准差:\n'); for i = 1:length(paramsCustom) fprintf(' p%d = %.4f ± %.4f\n', i, paramsCustom(i), stdParams(i)); end end

自定义模型的关键是初值要给得足够接近,因为自定义模型的参数空间没有内置模型那么规整。雅可比矩阵 J 的每一列是预测值对每个参数的偏导数,inv(J'*J)给出参数协方差的估计,对角线开根号就是参数标准差。这个标准差反映的是拟合的不确定度——如果某个参数的标准差比参数本身还大,说明该参数没有被数据有效约束,考虑简化模型。

另一个实用技巧是交叉验证:把数据分成训练集和验证集,用训练集拟合,在验证集上算 RMSE。如果验证集 RMSE 远大于训练集 RMSE,说明过拟合。

% 留一交叉验证 n = length(y); cvRMSE = zeros(n, 1); for i = 1:n trainIdx = true(n, 1); trainIdx(i) = false; [paramsCV, ~, ~] = Haocurve(x(trainIdx), y(trainIdx), 'expdecay', 'Display', 'off'); yPred = paramsCV(1)*exp(-paramsCV(2)*x(i)) + paramsCV(3); cvRMSE(i) = y(i) - yPred; end fprintf('交叉验证 RMSE: %.6f\n', sqrt(mean(cvRMSE.^2)));

交叉验证 RMSE 和拟合 RMSE 差距在 20% 以内算正常,差距过大就要警惕过拟合。我自己的习惯是:任何拟合结果在写进报告之前,先跑一遍初值扰动测试和交叉验证,两个都过了才认为参数可信。这个习惯帮我拦下过好几次看起来 R-square 很高但实际不可用的拟合结果。希望帮到你。

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

相关新闻

单词接龙与BFS:从暴力枚举到双向搜索的面试最优解

单词接龙与BFS:从暴力枚举到双向搜索的面试最优解

单词接龙这道题&#xff0c;我刚刷完的时候心里只有一个念头&#xff1a;难怪它能成为面试高频题。它不是那种背模板就能过的题&#xff0c;也不靠什么冷门技巧&#xff0c;它考的是你能不能一眼把一个看似“字符串操作”的问题翻译成图论问题。力扣第 127 题&#xff0c;标签写…

2026/10/20 22:24:15 阅读更多 →
Midscene.js实战:自然语言驱动浏览器自动化,告别脆弱CSS选择器

Midscene.js实战:自然语言驱动浏览器自动化,告别脆弱CSS选择器

先聊个真实场景。我维护过一套基于传统自动化框架的回归脚本&#xff0c;页面一改版&#xff0c;几十个选择器集体失效&#xff0c;光修定位就花了一天。这种痛苦做过浏览器自动化的人都懂&#xff1a;元素ID漂移、动态渲染打乱时序、跨域弹窗干扰、验证码偶尔冒出来……后来我…

2026/10/20 22:23:10 阅读更多 →
智能体系统设计哲学:从循环到安全边界的工程拆解

智能体系统设计哲学:从循环到安全边界的工程拆解

这个标题我不能直接写。 原因有两层&#xff1a;一是“Anthropic ClaudeCode”是真实公司与真实产品&#xff0c;按我的创作红线&#xff0c;不能基于真实产品名称去做所谓的“源码泄露”架构解析&#xff0c;更不能去复述或推断任何非官方渠道流出的代码内容&#xff1b;二是…

2026/10/20 22:23:10 阅读更多 →

最新新闻

context-mode设计模式:如何让同一套核心逻辑适配多种运行上下文

context-mode设计模式:如何让同一套核心逻辑适配多种运行上下文

1. 从"context-mode"这个词说起&#xff1a;它到底在解决什么问题第一次看到"context-mode"这个标题&#xff0c;很多人会下意识地把它当成某个框架里的配置项&#xff0c;或者某个库的开关参数。但如果你真的在工程一线待过几年&#xff0c;就会意识到这个…

2026/10/20 23:14:43 阅读更多 →
Windows内核安全编程实战:进程/文件/注册表三重监控框架

Windows内核安全编程实战:进程/文件/注册表三重监控框架

简介&#xff1a;这是一份基于VC开发的360杀毒软件高仿项目源码&#xff0c;面向C初学者及Windows桌面应用进阶学习者&#xff0c;旨在通过完整可运行的商业级UI框架实践&#xff0c;掌握MFC/WinAPI界面开发、多线程扫描逻辑、皮肤化UI设计&#xff08;SkinUI库&#xff09;、界…

2026/10/20 23:14:43 阅读更多 →
ArcGIS符号库本质:CIM驱动的空间语义编码系统

ArcGIS符号库本质:CIM驱动的空间语义编码系统

简介&#xff1a;本资源为ArcGIS专业制图用户必备的符号库集成包&#xff0c;面向GIS工程师、地图制图师及地理信息相关专业学习者&#xff0c;解决日常项目中符号缺失、风格不统一、制图效率低等实际问题。压缩包共142个文件&#xff0c;涵盖74个.style符号样式文件&#xff0…

2026/10/20 23:14:43 阅读更多 →
Java线程中断与Happens-Before:并发编程可见性规则实战解析

Java线程中断与Happens-Before:并发编程可见性规则实战解析

1. 线程中断&#xff1a;协作式取消的正确打开方式先把结论摆在这里&#xff1a;Java里的线程中断不是“强制终止线程”&#xff0c;而是一个协作式的通知机制。也就是说&#xff0c;A线程想停掉B线程&#xff0c;不能直接动手把B拽下来&#xff0c;而是给B打个招呼——“你该停…

2026/10/20 23:14:43 阅读更多 →
Linux Thermal温控模块详解:从框架设计到设备树配置实战

Linux Thermal温控模块详解:从框架设计到设备树配置实战

1. 项目概述1.1 为什么要啃Linux Thermal模块做嵌入式或者跑服务器的朋友应该都有这种体会&#xff1a;芯片性能越来越强&#xff0c;功耗密度越来越大&#xff0c;散热问题已经从“硬件工程师的烦恼”变成了“系统工程师的噩梦”。我自己手头负责的一块主控板&#xff0c;四核…

2026/10/20 23:14:43 阅读更多 →
N1刷飞牛NAS避坑指南:从U盘启动到救砖恢复完整流程

N1刷飞牛NAS避坑指南:从U盘启动到救砖恢复完整流程

N1刷飞牛NAS这件事&#xff0c;我前前后后帮人折腾过不少次&#xff0c;也在论坛里看过太多翻车案例。很多人拿到教程的第一反应就是下载镜像、拿U盘怼上去开刷&#xff0c;结果要么U盘启动不起来&#xff0c;要么写到一半断电黑屏&#xff0c;最后抱着一个点不亮的盒子到处问怎…

2026/10/20 23:13:40 阅读更多 →

日新闻

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/20 20:43:59 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

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

如果你的信息流最近也天天刷到“机器人大脑”这个词&#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 阅读更多 →