锂电池参数辨识实战:FFRLS+卡尔曼滤波+遗传算法,Matlab代码全解
搞电池的人尤其是做BMS算法或者电芯测试这一行的手里估计都囤着好几个电池模型。模型建好了参数怎么来靠厂商给一份常温下的标称值仿真一跑低温或者大倍率工况下电压偏差能到几十毫伏甚至更多SOC估计跟着飘。这时候就需要做参数辨识根据实测的电流电压数据把电池等效电路模型里的内阻、极化电容电阻这些参数给“拟合”出来。这篇文章我准备把手头这套常用方案完整拆开讲——递推最小二乘、带遗忘因子的FFRLS、卡尔曼滤波估计SOC、遗传算法离线寻优核心代码都是Matlab的覆盖离线标定和在线更新两条路。项目适合正在做电池建模、SOC/SOH估计或者刚接手BMS算法想快速上手的工程师参考。锂电参数辨识这个话题说难不难说简单也真不简单。难的地方在于你要同时处理好三个层面的问题模型结构选得对不对、辨识算法用哪种、数据质量能不能支撑你的算法。这三件事任何一件掉链子结果都很难看。我过去做过一段时间电池管理系统的算法开发把这套东西从头到尾踩了一遍今天把流程和经验整理出来尽量讲得实操一点代码能直接改改用。1. 先搞懂参数辨识到底在干什么模型、参数与数据三道关1.1 等效电路模型选型从物理意义到数学描述参数辨识的第一步不是找算法而是先确定你要辨识对象的结构。锂电池最常用的就是戴维南等效电路模型也就是Rint模型加RC网络。Rint最简一个欧姆内阻串一个电压源只适合静态场景。二阶戴维南模型精度高但参数多在线辨识的收敛压力大。我这里推荐先把一阶RC模型跑通也就是一个欧姆内阻R0串一组极化电阻R1和极化电容C1的并联网络再加一个开路电压源OCV。一阶RC模型的数学描述是这样的端电压 U_t OCV(SOC) - I·R0 - U1其中U1是极化电压动态方程是 dU1/dt -U1/(R1·C1) I/C1。离散化之后可以写成差分方程形式变成适合最小二乘的回归结构。为什么从一阶模型入手因为参数辨识本质上是在解一个最优化问题参数越多搜索空间越大对数据激励的要求就越高。二阶模型在高倍率脉冲下有优势但在普通工况下一阶模型的精度差异可能也就十几毫伏。先用一阶把流程打通后面需要再往二阶升级代码框架都不用动。把RC网络的微分方程做离散化推下去一阶模型能写成这种线性回归形式y(k) φ(k)^T·θ。具体推导各家文献都有核心思想是把包含U1的项消掉用端电压、电流的历史值和当前值构造回归量。这个形式直接决定了你能不能套最小二乘——这也是为什么模型选型要在算法之前确定下来。1.2 OCV-SOC曲线的获取与拟合模型里还有个关键部分OCV(SOC)函数。参数辨识的自变量不只是I和U_tOCV查表误差会直接污染辨识结果。做HPPC实验的一个隐藏目的就是把OCV-SOC曲线给标出来静置足够长时间让电池内部到达近似平衡状态测得的端电压就是该SOC点下的OCV。实际工程中很少用解析式来表达OCV-SOC基本都是多项式拟合或者分段线性插值。SOC要覆盖0到100%间隔5%或10%取点然后拿Matlab的polyfit或者interp1去套。多项式阶数别太高7到9阶就够了高了反而过拟合两头翘得厉害。注意OCV的滞后效应充电状态的OCV和放电状态的OCV并不完全重合锂电池存在迟滞电压。第一版做参数辨识的时候可以忽略迟滞直接用平均OCV曲线误差能控制在辨识允许范围内。如果后面做高精度SOC估计再考虑引入迟滞模型。1.3 一个容易被忽视的问题数据质量决定辨识上限很多入门者把精力全部压在算法上对数据预处理不上心结果同样的算法别人辨识出来的参数就是比你的稳。数据这里有三件事必须做到第一端电压采样要稳定。辨识算法对端电压的噪声非常敏感尤其是算差分项的时候噪声会被放大。采样前做滑动平均滤波或者用精度高一点的采集通道。第二电流激励必须“丰富”。最小二乘辨识本质上需要输入信号持续激励如果电流一直恒定回归矩阵接近奇异参数就辨识不出来或者辨识出来方差特别大。HPPC的脉冲电流或者动态工况电流比如某个标准工况的前几百秒都是不错的激励信号。第三时间对齐。电压和电流必须严格同步哪怕差一个采样周期辨识结果的偏差都可能大得离谱。采集系统要统一时钟后处理时也要再三确认。数据质量决定辨识上限算法只是逼近这个上限。这句话是我做了多次辨识以后最深的体会。2. 离线辨识与在线辨识两条路线最小二乘家族与全局优化2.1 批处理最小二乘最朴素的起点最原始的做法是把一整段实验数据拿来做一次最小二乘回归。把所有采样时刻的回归方程堆起来形成超定方程组Y Φ·θ解就是 θ (Φ^T·Φ)^(-1)·Φ^T·Y。批处理最小二乘的优点是实现简单一个矩阵求逆就完事算出来的结果在数据质量好的时候非常准。缺点是没法在线用——你必须攒完全部数据才能算而且计算量随数据量增长。实际应用场景是在实验室标定阶段。把电芯放在恒温箱里跑完HPPC数据导出来用批处理最小二乘算一组“离线最优参数”当作后续在线算法的初值和对照组。还有个小细节构造Φ矩阵的时候如果用的都是原始电压电流矩阵的条件数可能比较大数值上不稳定。可以先对数据进行归一化或者用QR分解替代直接求逆。Matlab里用左除运算符“\”比直接inv(Φ*Φ)更稳这就是工程细节。2.2 递推最小二乘RLS与遗忘因子FFRLS在线辨识的思路是每来一个新采样点就把参数更新一次不需要重新处理历史数据。递推最小二乘的更新逻辑是——上一拍的参数加上一个修正项修正项增益由协方差矩阵决定。标准RLS的递推公式是这样的假设回归方程是 y φ^T·θ则增益向量 K(k) P(k-1)·φ(k) / [λ φ(k)^T·P(k-1)·φ(k)]参数更新 θ(k) θ(k-1) K(k)·[y(k) - φ(k)^T·θ(k-1)]协方差更新 P(k) [P(k-1) - K(k)·φ(k)^T·P(k-1)] / λλ就是遗忘因子取值0.95到1.0之间。λ1时算法退化成标准RLS所有历史数据同样权重λ越小新数据权重越大算法跟踪参数变化的能力越强但对噪声也更敏感。为什么电池辨识必须带遗忘因子因为电池参数本身是时变的温度变了SOC变了内阻就会跟着变。如果所有历史数据权重相同参数估计就变成“平均”效果跟不上实际变化。遗忘因子的本质是给历史数据加一个指数衰减的权重让算法“忘掉”太久以前的信息。实际取值经验常温动态工况下λ设0.98到0.995之间比较稳。λ设太低比如0.9参数虽然跟得快但估计值会抖得很厉害λ接近1跟得慢但平稳。你可以先离线拿数据扫一遍λ看哪个值在追踪速度和波动幅度之间平衡最好。2.3 遗传算法为什么在离线辨识里值得用说到遗传算法GA很多人第一反应是“这也太老派了”。但在电池参数离线辨识这个场景下GA其实很实用。因为FFRLS之类的方法本质上是局部优化——你得把模型写成线性回归形式才能套。如果模型结构复杂比如要考虑温度内插系数或者同时辨识多个温度点下的参数回归形式就不容易构造这时直接用GA做全局寻优反而方便。遗传算法的思路不复杂维护一群候选解种群每个解就是一组参数R0、R1、C1用模型输出和实测电压之间的误差构造适应度函数然后通过选择、交叉、变异反复迭代最终收敛到适应度最好的解。GA最大的好处是不需要初值猜得准对非线性目标函数也能搜。代价是计算量大一次辨识可能要跑几代、每代上百个个体适合离线场景。有个工程技巧GA跑完的结果不用白不用把它的最优参数直接拿来做FFRLS的初值。FFRLS这种递归算法对初值敏感初值离真值太远时收敛时间长甚至一开始会震荡。GA先给一个全局较优的起点FFRLS在线再精调两段式策略配合实测非常好使。3. Matlab代码实战之一带遗忘因子的递推最小二乘辨识3.1 数据准备与仿真信号生成动手写代码之前先准备好数据。最稳妥的办法是用仿真数据验证算法正确性自己设定一组“真实参数”用模型生成电压数据再叠加一点高斯噪声然后用辨识算法去把参数反推回来。能反推回来说明代码逻辑没问题再上实测数据。我一般这样生成仿真数据设定SOC初值从80%开始用一个包含脉冲和动态波形的电流序列激励电流幅值控制在±2C以内采样频率1Hz时长500秒以上。clear; clc; close all; % 仿真参数真实值 R0_true 0.02; % 欧姆内阻 R1_true 0.008; % 极化内阻 C1_true 1200; % 极化电容 Q_true 2.0; % 容量Ah % 电流序列脉冲动态段 t (0:499); I [ones(1,20)*2, zeros(1,10), ones(1,20)*(-2), zeros(1,10), ... ones(1,20)*1, zeros(1,10), ones(1,20)*(-1), zeros(1,10), ... sin((0:339)/20)*1.5, zeros(1,40)]; N length(t); % 这里注意维度实际建议用行向量转置统一3.2 FFRLS核心递推代码拿到电压电流序列后核心就是这个递推循环。构造回归向量时一阶RC模型的差分方程整理成标准形式后需要用到当前电压、上一拍电压、当前电流、上一拍电流。实现如下% 递推变量初始化 theta [0.02; 0.005; 300]; % 初始值R0, R1, C1的某种组合或直接对应回归系数 P eye(3) * 1000; % 协方差矩阵初值取大一点表示初始参数不太可信 lambda 0.98; % 遗忘因子 theta_hist zeros(N, 3); U_model zeros(N, 1); for k 3:N % 构造回归向量具体形式取决于你的差分方程整理方式 phi [U(k-1); I(k); I(k-1)]; y U(k); % 增益向量 K P * phi / (lambda phi * P * phi); % 参数更新 theta theta K * (y - phi * theta); % 协方差更新 P (P - K * phi * P) / lambda; % 记录 theta_hist(k,:) theta; end上面为了展示核心逻辑做了简化实际构造回归向量的时候要根据你的差分方程严格推导phi的形式不对结果一定不对。我重点解释一下协方差矩阵P的物理含义。P可以粗略理解为参数估计的不确定度P数值大说明对当前参数估计没信心修正增益就大随着数据积累P逐渐变小修正增益也变小参数趋于收敛。遗忘因子λ放进分母相当于每个周期把P放大1/λ防止P衰减到太小保持算法对参数变化的跟踪能力。初值P取大对角阵是刻意“不信任”初值让算法前几步快速修正。如果你对初值很有信心P取小一些如果完全没谱P取到1e4也不奇怪。3.3 辨识结果分析与模型验证跑完递推先看参数轨迹。理想情况是前几十拍参数从初值快速向真值收敛然后小幅波动。如果参数轨迹发散或者剧烈震荡先查三件事回归向量构造是否错误遗忘因子是不是设太低激励信号是否太弱。辨识完参数必须验证。验证方法很简单拿辨识出的参数重新跑一遍模型用同样的电流输入计算模型输出电压再和实测电压对比。% 用辨识结果重算端电压 U_sim zeros(N,1); U1 0; % 假设已知OCV曲线这里用常数为了简化 OCV_sim 3.6; for k 1:N U1 U1 * exp(-1/(R1*C1)) I(k) * R1 * (1 - exp(-1/(R1*C1))); U_sim(k) OCV_sim - I(k)*R0 - U1; end % 画对比图 figure; plot(t, U, b, t, U_sim, r--, LineWidth, 1.5); legend(实测电压,模型输出电压); xlabel(时间/s); ylabel(电压/V);模型输出电压和实测电压的RMSE能压到几个毫伏以内说明辨识结果是可信的。注意验证要用辨识时没用过的数据段比如跑HPPC的数据辨识完换一段动态工况数据来验证才能体现泛化能力。4. Matlab代码实战之二卡尔曼滤波做SOC联合估计4.1 状态方程与观测方程的建立参数辨识搞定了下一个核心问题是怎么用上这些参数做SOC估计。这里卡尔曼滤波就登场了。虽然也有直接查表积分法这类朴素的SOC估算方式但卡尔曼滤波的好处在于能把模型误差和测量噪声做融合输出一个带方差估计的状态结果。一阶RC模型下状态向量设为 x [SOC; U1]离散状态方程如下SOC(k1) SOC(k) - η·I(k)·Δt / QU1(k1) U1(k)·exp(-Δt/τ) I(k)·R1·(1 - exp(-Δt/τ))其中 τ R1·C1观测方程就是端电压方程U_t(k) OCV(SOC(k)) - I(k)·R0 - U1(k)这里SOC和U1的更新都是线性的问题出在观测方程OCV(SOC)是个非线性函数直接套经典卡尔曼滤波不行需要扩展卡尔曼滤波EKF对OCV函数做一阶泰勒展开求雅可比矩阵。4.2 EKF核心迭代实现EKF的核心步骤是预测和更新两个循环。预测阶段用状态方程算先验估计和协方差更新阶段用观测方程算卡尔曼增益修正状态估计。% EKF参数 x [0.8; 0]; % 初始状态[SOC; U1] P diag([0.01, 0.0001]); % 初始协方差 Q diag([1e-5, 1e-6]); % 过程噪声 R 1e-4; % 测量噪声 SOC_est zeros(N,1); % 已知参数来自FFRLS辨识结果 % R0, R1, C1, Q_capacity, dt for k 1:N % 预测 A [1, 0; 0, exp(-dt/(R1*C1))]; x_pred A * x [0; I(k)*R1*(1-exp(-dt/(R1*C1)))]; P_pred A * P * A Q; % 观测方程线性化OCV函数对SOC求导 dOCV_dSOC polyval(polyder(OCV_coeff), x_pred(1)); H [dOCV_dSOC, -1]; % 更新 z_pred OCV_func(x_pred(1)) - I(k)*R0 - x_pred(2); K P_pred * H / (H * P_pred * H R); x x_pred K * (U(k) - z_pred); P (eye(2) - K * H) * P_pred; SOC_est(k) x(1); endOCV_coeff是前面拟合好的多项式系数polyder和polyval是Matlab自带的求导和求值函数用起来非常方便。4.3 滤波器调参与防发散EKF最折磨人的就是调Q和R。Q是过程噪声协方差表示你对模型本身的信任程度R是测量噪声协方差表示你对采样电压的信任程度。Q大R小滤波器更相信测量值SOC估计会跟得快但噪声大Q小R大更相信模型SOC轨迹平滑但可能跟不上真实变化。实操经验先把R按电压采集精度的平方来估比如采集精度1mVR取1e-6再根据效果微调。Q的调节更玄学我习惯先设大一点让滤波器能跟住数据然后逐渐减小直到轨迹开始平滑。EKF发散的表现是状态值剧烈跳变或者跑到物理不可能的范围比如SOC超过1。这时候优先检查雅可比矩阵H对不对以及OCV函数在低SOC段是否过于平坦导致观测失效——如果dOCV/dSOC接近0观测方程对SOC几乎没有修正作用SOC就只能靠积分了。5. Matlab代码实战之三遗传算法离线寻优5.1 适应度函数设计GA离线辨识的思路是直接把模型参数当基因用遗传算法搜索让模型输出与实测电压误差最小的参数组合。适应度函数通常取误差平方和的倒数误差越小适应度越高。function fitness batteryFitness(params, U, I, OCV, dt) R0 params(1); R1 params(2); C1 params(3); % 用一阶RC模型仿真 N length(I); U_sim zeros(N,1); U1 0; for k 1:N U1 U1 * exp(-dt/(R1*C1)) I(k) * R1 * (1 - exp(-dt/(R1*C1))); U_sim(k) OCV(k) - I(k)*R0 - U1; end err U - U_sim; fitness 1 / (sum(err.^2) eps); end参数范围要给定R0一般在0.001到0.1欧姆之间R1在0.001到0.05之间C1在100到5000法之间。范围太窄可能漏掉真值太宽搜索效率低。5.2 用ga实现参数辨识的完整流程Matlab有自带的ga函数直接调就行。下面是我常用的调用方式% 定义参数边界 lb [0.001, 0.001, 100]; ub [0.1, 0.05, 5000]; % 调用ga options optimoptions(ga, ... PopulationSize, 100, ... MaxGenerations, 200, ... Display, iter, ... UseParallel, true); [best_params, best_fitness] ga((p) batteryFitness(p, U, I, OCV, dt), ... 3, [], [], [], [], lb, ub, [], options);UseParallel设为true可以用并行计算工具箱加速适应度评估。GA的随机性比较大同一个数据跑两次结果会有细微差异这是正常的。种群大小和迭代代数要看数据量定我习惯先用100×200的配置看趋势效果不够再翻倍。GA的辨识速度比FFRLS慢得多但优势在于不依赖初值和模型结构的线性化程度。你把目标函数换成二阶RC模型甚至带温度修正的参数模型GA适应度函数改几行就行不用重新推导回归方程。5.3 两段式策略GA给FFRLS喂初值GA和FFRLS不是竞争关系是配合关系。实际工作流我是这么设计的第一步用GA离线跑一遍拿到全局较优的参数组这一组参数涵盖了当前温度和SOC区间下的“平均水平”。第二步把这组参数作为FFRLS的初值theta_0P初值可以设小一点比如1表示对初值比较有信心。第三步实车或者实测工况下FFRLS在线运行参数跟随温度、老化等因素的变化做实时微调。好处很明显GA把FFRLS从“从零收敛”的困境里解救出来在线运行前几个采样周期就不会出现离谱的参数跳变。FFRLS的初值敏感性这个老大难问题用这种方式基本绕开了。6. 实操中绕不开的坑参数、数据与数值问题速查6.1 遗忘因子与噪声的平衡遗忘因子λ是FFRLS一个最敏感的旋钮。我之前做过一组数据对比同一段动态数据λ从0.95到0.99各跑一遍λ0.95时参数轨迹跟随很快但R0的估计波动达到±15%λ0.99时参数轨迹稳定但SOC变化剧烈的那段里R1的响应明显滞后。推荐的调试步骤是先把λ设0.98跑通全流程模型验证的RMSE能接受以后再根据波形微调。如果参数轨迹噪声大增大λ如果跟踪不上参数突变比如冷启动时内阻快速变化减小λ。还有个细节λ不是必须全程固定的。有些文献做“变遗忘因子”在激励丰富的时候用较小的λ快速跟踪激励弱的时候自动回退到接近1。实现不复杂但建议先把定λ的方案跑熟了再探索。6.2 数据激励条件与采样设置持续激励条件是辨识算法收敛的前提。有个最容易踩的坑拿一段静置数据——电流一直为0——去做辨识。电池静置时端电压只受OCV支配回归矩阵的信息矩阵接近奇异辨识出来的R0、R1、C1完全是噪声毫无意义。判断数据是否有效的一种方法看电流序列是不是有足够的频段成分。恒流脉冲含DC和低频成分动态工况含丰富的中高频成分。两种混合起来是最好的辨识信号既有低频激励去辨识R0极化内阻的总和也有高频动态去分开欧姆内阻和极化内阻。采样频率不要盲目追求高要跟模型时间常数匹配。一阶RC模型的极化时间常数通常在几秒到几十秒之间采样1Hz到10Hz足够。采样太高反而可能放大测量噪声对差分项的干扰。抗混叠滤波则要看采集硬件软件层面对每周期做一次滑动平均就够。6.3 数值稳定性与协方差矩阵维护RLS长期运行会遇到一个经典问题协方差矩阵P可能因为数值误差失去正定性导致参数更新出现异常跳变。尤其是λ接近1长时间运行时P的元素可能溢出。处理办法有几种按实用性排序第一对P做对称性保持每次更新后执行P (P P)/2防止数值误差破坏对称性。第二给P设置下限和上限比如限制对角线元素不低于1e-8、不高于1e8避免零或溢出。第三定期检查P的特征值如果出现负特征值就重置P为单位阵乘一个较小值。我在实际代码里用的第一个加第二个的组合简单有效跑几百分钟在线数据没出现过问题。6.4 结果验证的三种手段最后说一下辨识结果怎么验证才算信得过。我用三个手段交叉确认第一种是残差分析。计算实测电压和模型输出电压的残差序列观察残差的均值是否接近零、残差是否包含明显的结构成分。如果残差有规律性波动说明模型结构没有完全捕获电池动态特性考虑提高模型阶数。第二种是参数物理一致性。辨识出的参数要符合物理常识R0在零点几毫欧到几十毫欧之间R1比R0小或者同数量级C1在几百到几千法拉别太离谱。参数跑出合理区间不要强行用先回去查数据和代码。第三种是泛化数据验证。用辨识数据训练用另一段独立工况数据验证。这个最可靠因为参数辨识本质上是个数据拟合问题贴合训练数据不等于泛化好。我用这个办法抓到过不少问题——有些参数在训练段表现完美换一段低温数据就露馅。最后我自己的体会是锂电池参数辨识这套东西算法本身没有多深奥真正的壁垒在于对数据和对模型的直觉。你会踩的坑大概率都是别人踩过的而你在代码里积累的那些小改动——初值给法、遗忘因子选值、P矩阵保护——才是让一套算法从“论文能跑”变到“实车能跑”的关键。项目后续你想往深了做可以考虑二阶RC模型的辨识、带温度内插的参数化模型、或者把FFRLS和EKF拧成一个联合估计器。先把一阶模型这整条链路跑通后面的路自然就清楚了。

相关新闻

PyQt5+YOLOv5工业级检测界面:非阻塞推理与模型热加载方案

PyQt5+YOLOv5工业级检测界面:非阻塞推理与模型热加载方案

简介:这是一套面向PyQt5与YOLOv5初学者的GUI目标检测实战项目,专为刚接触GUI开发和目标检测算法的学习者设计,帮助其快速搭建可运行、可调试的端到端检测界面。资源共112个文件,包含26个Python源码(含主程序、逻辑模块…

2026/10/17 12:43:02 阅读更多 →
友盟分享SDK 6.4.6 定制版:Android 12+ 与 targetSdkVersion=33 兼容修复方案

友盟分享SDK 6.4.6 定制版:Android 12+ 与 targetSdkVersion=33 兼容修复方案

简介:本资源是面向Android应用开发者的友盟社会化分享SDK集成包,专为快速接入微信、QQ、微博及Facebook、Twitter等国内外主流社交平台分享功能而设计,适用于中高级移动开发者在项目中实现标准化、高兼容性的社交传播能力。压缩包为ZIP格式&a…

2026/10/17 12:43:02 阅读更多 →
Linux ISO镜像秒变本地软件源:离线安装全依赖自动解析

Linux ISO镜像秒变本地软件源:离线安装全依赖自动解析

1. 项目概述:把 Linux 系统镜像当成本地软件仓库来用,到底省了多少事?你有没有遇到过这样的场景:在一台刚装好基础系统的服务器上,想装个htop查进程,敲yum install htop却提示“找不到包”;或者…

2026/10/17 12:43:02 阅读更多 →

最新新闻

技术动态 | OpenClaw Skill 做 RAG 的工程化落地:从检索切分到 LaTeX/TikZ 图表代码生成,TaoToken 统一 Key 打通实验链路

技术动态 | OpenClaw Skill 做 RAG 的工程化落地:从检索切分到 LaTeX/TikZ 图表代码生成,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 15:40:07 阅读更多 →
单细胞RNA测序与细胞间通讯:肿瘤转移分析全流程解析

单细胞RNA测序与细胞间通讯:肿瘤转移分析全流程解析

/* 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 15:40:07 阅读更多 →
Linux执行.sh文件提示No such file or directory?TaoToken场景下的排查与解决方法

Linux执行.sh文件提示No such file or directory?TaoToken场景下的排查与解决方法

/* 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 15:40:07 阅读更多 →
Claude Code、Codex 到底强在哪?一篇讲清它们的 Agent 本质(不是简单调用 API)

Claude Code、Codex 到底强在哪?一篇讲清它们的 Agent 本质(不是简单调用 API)

/* 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 15:40:07 阅读更多 →
PyTorch中ModuleList与Sequential的深度对比:从模块注册到动态网络构建

PyTorch中ModuleList与Sequential的深度对比:从模块注册到动态网络构建

/* 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 15:40:07 阅读更多 →
OpenClaw接入个人电脑后,全自动操作磁盘文件,完整从零本地部署教程来了!TaoToken统一Key配置指南

OpenClaw接入个人电脑后,全自动操作磁盘文件,完整从零本地部署教程来了!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 15:39:07 阅读更多 →

日新闻

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

简介:《DeepSeek使用方法.pdf》是一份面向DeepSeek入门及进阶用户的完整使用指南,重点围绕V3与R1两款模型的能力差异与适用场景展开,帮助读者根据任务类型与成本选择合适的模型。资源共1个PDF文件,压缩包大小约311KB,篇…

2026/10/17 0:00:25 阅读更多 →
200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

简介:这是一份聚焦DeepSeek提示词优化的《200Deepseek润色指令》PDF文档,共收录两百余条可直接套用的润色指令,涵盖语法修正、风格统一、逻辑梳理、表达精炼等维度,并针对商务写作、学术论文、广告文案等场景给出差异化建议。文档…

2026/10/17 0:00:25 阅读更多 →
OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

简介:本资源是一份基于OpenCV的本科课程设计完整报告,面向计算机视觉初学者、图像处理学习者及高校通信/信息类专业学生,解决物体智能计数与检测结果结构化记录的实际问题。项目覆盖图像预处理、轮廓检测、边界框绘制、轨迹栏交互式参数调节、…

2026/10/17 0:00:25 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/16 21:35:51 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/17 1:44:59 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/16 15:04:24 阅读更多 →

月新闻

我发现了一个新思路:用 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/16 21:54:38 阅读更多 →
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/16 3:49:43 阅读更多 →
黑夜航拍船只数据集训练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/16 14:23:36 阅读更多 →