ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

EV充电功率计算与MATLAB蒙特卡洛仿真:从单台车曲线到集群负荷容量校核

EV充电功率计算与MATLAB蒙特卡洛仿真:从单台车曲线到集群负荷容量校核

简介:面向电动汽车研发、电网负荷分析与电气工程教学场景的MATLAB源码包,围绕充电功率计算与负荷预测这一核心问题,提供可直接运行的仿真脚本,覆盖慢充与快充两种模式下的参数设定思路。包内共3个文件,以2个.m脚本为主,分别对应区域负荷处理与电动汽车接入计算,另附1个.asv自动保存版本便于核对调试,压缩包仅7KB,轻量易用。目前已吸引245人浏览学习,在小体积工具类资源中具备一定参考热度。源码中包含电压电流参数设定、电池特性定义、充电器输出限制等关键环节,可帮助读者理解充电功率的实时计算流程,并在Simulink中进一步扩展恒流充电、恒压充电等策略仿真;借助MATLAB的实时工作空间,还能结合历史数据做功率需求预测与电网调度分析。整体轻量实用,适合有一定MATLAB基础、正在开展充电桩或电动汽车接入研究的工程师与学生参考。

1. EV充电功率计算为什么不能只查额定功率

打开一台充电桩的参数表,交流慢充写着7kW,直流快充写着60kW或120kW。很多从业者做配电容量校核时,直接把这些额定功率加起来,乘一个同时率就上报。这个做法在小规模试点里还凑合,现在越来越不顶用:一辆车的充电功率其实是一条随时间变化的曲线,跟电池SOC、充电阶段、环境温度、桩群的功率分配逻辑都有关系。EV充电功率计算真正要处理的,是这条曲线怎么建模、怎么叠加、怎么变成可交差的容量结论。用MATLAB把这件事算透,能回答“变压器配多大不浪费又不会跳闸”“冬季夜间峰值到多少”这些具体问题。这篇笔记适合做充电站设计、园区配网规划、以及研究EV负荷特性的电气工程师。

2. 充电功率是怎么算出来的:从单台车到集群负荷的两个层次

2.1 单台车的功率曲线为什么不是一条直线:恒流、恒压与温度折损

先看一辆车接上一台直流快充桩之后的实际功率走向。主流锂离子电池的充电策略是CC-CV,先恒流后恒压。低SOC阶段,BMS会先给一个小电流做预充,功率只有额定值的10%上下;进入主充电阶段后,电流拉高、电压上升,功率基本顶在桩的额定值附近;等SOC超过80%,电池电压逼近上限,BMS开始降电流维持恒压,桩侧功率从额定值一路往下掉,充满前可能只剩3~5kW。所以拿“额定功率×充电时长”去算单台车电量,一定会偏大,而且偏得不是一点半点。

工程上我不太建议把充电过程按“恒流、恒压”细分到每一秒,那对集群负荷计算帮助不大,徒增参数数量。常用做法是简化成两段:恒功率段取桩额定功率或车辆请求功率的较小值;恒压段按SOC线性降到充电结束。单台车瞬时功率可以写成P(t)=min(P_chg, P_req(SOC,T)),P_chg是桩能给出的最大功率,P_req是车辆BMS此刻愿意接受的请求功率。这里有个关键区别:P_req受电池温度影响非常大,零下10℃时很多车型的请求功率只有额定值的40%左右,BMS不是为了省电,是保护电池。

效率这块也要及时算进去。车端功率是真正进电池的功率,桩端交流侧功率才是你配电容量要管的输入。关系式是P_grid=P_bat/η+P_aux,η对直流快充通常在0.92~0.96,交流慢充在0.88~0.94;P_aux是桩的待机、散热风扇、屏幕这类辅机功耗,一台60kW直流桩的辅机就有1~1.5kW,这部分算台区总负荷时不能漏。下面这张表是我在几个实际站点项目里从桩侧监控导出的范围,可以直接当初算默认值用。

参数交流慢充直流快充60kW直流快充120kW
额定输出功率7kW60kW120kW
恒功率段实际最高功率6.6kW55kW110kW
充电效率η0.88~0.940.92~0.960.92~0.96
辅机功率P_aux0.3kW1.2kW1.5kW
恒压段起始SOC85%左右80%左右80%左右

各品牌桩会有差异,但数量级不会跑太远。如果你要写进可研报告,建议在参数表后面加一行“以上取值为行业常见范围,最终以厂家技术协议为准”,这能挡住很多追问。

2.2 集群负荷为什么不能直接相加:功率分配与同时率

单台车搞清楚之后,多台车一起充才是配电扩容真正要面对的问题。很多人理解的“同时率”停留在所有桩额定功率乘以一个0.5或0.6的固定系数,这个做法有两个漏洞。第一,同时率不是常系数,它由车辆到达率、充电时长和桩数量共同决定,晚高峰和凌晨完全不同;第二,现代直流充电站普遍有功率分配策略,多根桩共享同一套整流模块或同一个台区容量上限,车辆请求功率高时,桩群总功率被锁在某个值再分给各台车。

我处理集群负荷时,习惯把模型拆成三个层次。第一层是每辆车的理想充电需求,由电池SOC、车型和单桩功率决定。第二层是桩群的可用功率约束,比如一个60kW的功率模块组给四把枪,四辆车同时抢的时候每把枪最多分到15kW。第三层是台区变压器容量约束,从电网侧看最大可供给充电场站的交流侧有功功率是固定值,比如变压器630kVA、过载保护设到80%,桩群可用的交流侧有功上限就按500kW左右卡。

仿真的顺序是“先算理想需求,再按桩群约束逐级切负荷”。每把枪分配到的功率不是等分,而是按“SOC低者优先”的原则调整,SOC高于85%的车会主动让出功率。这一点很多论文里的固定同时率模型没有考虑,但真实运营中就是靠这个逻辑保证不跳闸的。加了逐级约束之后,曲线形态会明显变化:无约束时峰值出现在下班半小时后,大家同时插枪;有桩群功率分配约束时峰值被削平,充电时长拉长,但总电量不变。做容量校核的人两个曲线都要看,一个用来定变压器容量,一个用来估每辆车充满所需时间、会不会影响用户第二天用车。

3. 用MATLAB跑通最小功率计算:数据表、清洗与日负荷曲线

3.1 充电功率数据从哪来:一个可用的CSV字段约定

EV充电功率计算最省力的路径不是从第一性原理推公式,而是把运营平台导出的充电记录拿来直接用。真实平台导出的文件一般包含以下字段:记录时间点、车辆ID、桩编号、电池SOC、充电功率、充电状态。拿到数据的第一步不是算,是先确认功率字段的量测位置——写“充电功率”的到底是交流侧输入功率还是直流侧输出功率。这一个定义错了,后面所有结果都偏,这个坑在第5章还会展开。

我通常会把原始数据整理成统一CSV再进MATLAB,字段约定如下。时间戳time_str是字符串,格式yyyy-MM-dd HH:mm:ss,使用当地时间不换时区;车辆标识vehicle_id是字符串,不要求连续编号;SOC是小数,范围0~1;充电功率power_kw是数值,单位kW,默认是桩端直流侧输出功率;桩编号pole_id是字符串,区分同一站点内的不同充电位。实际数据经常从不同系统拼出来,时间戳会出现重复或顺序颠倒。别指望数据是干净的,清洗这一步要当成必要流程,不算额外工作。

3.2 读取与清洗:readtable、datetime与10分钟重采样

下面这段代码是我处理充电功率记录的最小流程,R2019b之后的MATLAB都能跑,只用基础功能,不需要额外工具箱,也不需要完整版Simulink模型。

% 读取充电原始记录 data = readtable('charge_log.csv'); % 查看字段名,确认功率列的列名 disp(data.Properties.VariableNames); % 文本时间转成datetime数组,格式必须与CSV完全一致 data.t = datetime(data.time_str, 'InputFormat', 'yyyy-MM-dd HH:mm:ss'); % 按时间排序,很多运营平台导出时会乱序 data = sortrows(data, 't'); % 把非物理功率值清零:负数、NaN、超过200kW的异常尖峰 data.power_kw(data.power_kw < 0 | isnan(data.power_kw)) = 0; data.power_kw(data.power_kw > 200) = 0; % 生成10分钟聚合键,方便后续按车、按时间分组 data.t_10 = dateshift(data.t, 'minute', 'nearest', 10); % 按桩编号和时间间隔分组,取平均功率 agg = groupsummary(data, {'pole_id', 't_10'}, 'mean', 'power_kw'); % 输出前面几行,核对结果 head(agg)

读进来之后要先打印字段名和头几行,很多报错都出在列名不匹配。datetime的InputFormat必须和CSV里时间字符串的格式完全一致,差一个空格就会变成全部NaN。dateshift的分钟对齐是我自己的选择,用“nearest”就近对齐到整10分钟边界;如果你更关注电量积分,可以改用“start”并把间隔调小到1分钟。

groupsummary里的mean适合做电量统计,算的是这段时间的平均功率。如果目标是看这个桩的峰值负荷能力,度量要换成max,得到每个时间段的峰值功率。同一份数据,用mean和max算出来的曲线形状差异很大,按用途二选一,不要混用。做容量校核的人主要看max,做订单计费的人才看mean。

3.3 从聚合表到日负荷曲线:站级总功率与容量校核

聚合完成后的下一步,是把多台车的数据叠加成站点总负荷曲线。叠加前必须明确一个前提:同一时刻多根桩都在充电,功率值可以直接相加,但前提是这些桩之间没有功率分配约束。如果有共享功率模块,要在第4章的蒙特卡洛模型里加约束,而不是在这里简单相加。

% 按时间列分组,把所有桩的功率求和 total_by_time = groupsummary(agg, "t_10", "sum", "mean_power_kw"); % 转成timetable,方便做时间重采样 total_tt = table2timetable(total_by_time); % 半小时重采样,sum表示该时段累计电量 halfhour = retime(total_tt, 'regular', 'sum', 'TimeStep', minutes(30)); % 峰值功率:取半小时电量的最大值,单位kWh换算成平均kW peak_kw = max(halfhour.sum_mean_power_kw) * 2; fprintf('半小时峰值负荷约 %.1f kW\n', peak_kw); % 画两条曲线:10分钟原始曲线和半小时曲线 figure; subplot(2,1,1); plot(total_tt.Time, total_tt.sum_mean_power_kw, 'LineWidth', 1); grid on; ylabel('10分钟功率(kW)'); title('充电站总功率曲线'); subplot(2,1,2); bar(halfhour.Time, halfhour.sum_mean_power_kw, 'BarWidth', 1); grid on; ylabel('半小时电量(kWh)'); title('充电站半小时电量');

代码里有一个容易踩的转换点:groupsummary返回的是普通table,必须先table2timetable才能用retime做时间重采样。retime的“sum”得到的是半小时累计电量,如果横轴单位是kWh,要乘2才换算回平均kW。注意半小时重采样的电量曲线要比功率曲线更平滑,做容量校核时看的是峰值,不是平均电量,所以最终设计值要回到10分钟曲线或半小时平均功率曲线上取max。

容量校核还要关注峰值持续时间。配电变压器允许短时过载,比如120%负载持续两小时是可以的,但持续一整天就会影响寿命。所以我一般会把半小时曲线按天拆开,统计每个运行日的峰值和峰值出现时刻,看峰值是不是总落在同一时段,再看持续小时数,最后才定变压器容量。只看一个全天最大峰值就下单采购,容易选大,也容易选错方向。

4. 带随机性的集群充电功率仿真:蒙特卡洛参数设置与代码

4.1 为什么充电负荷是随机过程:先定分布再谈仿真

同一座充电站,不同日期的负荷曲线差异很大。周一到周五晚高峰大家回来插枪,周末可能一半人出去玩了。决定曲线形态的变量主要有四个:起始SOC、起始充电时间、电池容量、充电桩功率等级。这些变量都有明显的统计分布特征,不能取一个固定数拍脑袋。起始SOC对私家车一般集中在0.2~0.6,均值在0.4附近;网约车经常跑到0.1~0.2才进站。起始充电时间对家用慢充桩集中在18:00~22:00,对快充站则有早晚两个峰。电池容量和车型强相关,同一个站里会有40kWh的插混车和85kWh的长续航车混着来,用正态分布近似合理。

碰到一个新站没有运营数据时,我一般直接用经验参数兜底,见下表。这些参数来自多个站点日志的综合观察,虽然不能精确匹配某个场站,但作为预可研阶段的输入足够。

随机变量分布类型参数初值备注
起始SOCBeta分布α=2, β=5均值约0.29,偏重低SOC
起始充电时间分段混合18:00~20:00占50%,20:00~22:00占30%,其余20%面向私家车慢充
电池容量正态分布μ=60kWh,σ=8kWh限制在20~100kWh
慢充桩额定功率定值7kW按现场铭牌
快充桩额定功率定值60kW可按实际桩群构成混合

有实测数据之后,用fitdist去拟合导出参数,比手调均匀分布更贴近真实站点。Beta分布天然落在[0,1]区间,比正态分布更适合描述SOC这种有边界的变量。没有Statistics Toolbox时,Beta(2,5)可以用“均匀数排序后做非线性映射”的近似方法构造,工程上把均值、方差对齐就够用了。

4.2 蒙特卡洛生成集群充电功率:以200辆车为例的最小代码

现在给出一个能直接跑的完整实现,目标是把200辆车的随机充电行为叠成一条15分钟分辨率的集群功率曲线。整个脚本不依赖Simulink,纯脚本即可运行,适合做方案初算。

n_cars = 200; % 模拟车辆数 dt = 15 / 60; % 时间步长,单位小时 t_total = 24; % 模拟24小时 n_steps = t_total / dt; % 时间步数 % 1. 采样电池容量,单位kWh,限制在合理范围 battery_kwh = max(20, min(100, normrnd(60, 8, n_cars, 1))); % 2. 采样起始SOC,用Beta分布,需Statistics Toolbox soc_start = max(0.05, min(0.95, betarnd(2, 5, n_cars, 1))); % 3. 采样起始充电时间,按私家车晚高峰场景 % 这里用三段概率近似:18-20点占50%,20-22点占30%,其他占20% t_start_h = rand(n_cars, 1) * 24; high_peak = rand(n_cars, 1) < 0.5; % 一半车落入18-20点 t_start_h(high_peak) = 18 + 2 * rand(sum(high_peak), 1); second_peak = ~high_peak & (rand(n_cars, 1) < 0.6); % 剩余中60%落入20-22 t_start_h(second_peak) = 20 + 2 * rand(sum(second_peak), 1); % 4. 设定每辆车的充电功率上限,按慢充为主、20%快充混合 is_fast = rand(n_cars, 1) < 0.2; p_max = zeros(n_cars, 1); p_max(is_fast) = 60; % 快充桩额定60kW p_max(~is_fast) = 7; % 慢充桩额定7kW % 5. 计算每辆车所需充电时长,考虑0.9效率折算 energy_needed = battery_kwh .* (1 - soc_start); % 需要充入电量kWh charge_duration = energy_needed ./ (p_max * 0.9); % 小时 charge_duration = min(charge_duration, 10); % 单次最多充10小时 % 6. 构建功率叠加矩阵,行是车,列是时间步 P = zeros(n_cars, n_steps); for i = 1:n_cars start_step = ceil(t_start_h(i) / dt) + 1; end_step = min(n_steps, start_step + ceil(charge_duration(i) / dt) - 1); P(i, start_step:end_step) = p_max(i); % 恒功率近似 end % 7. 叠加得到集群总功率 t_axis = (0:n_steps-1) * dt; P_total = sum(P, 1); % 8. 画曲线 figure; plot(t_axis, P_total, 'LineWidth', 1.5); grid on; xlabel('时间(h)'); ylabel('总充电功率(kW)'); title('200辆EV随机充电集群功率曲线');

代码里的每一步都有用途。soc_start用Beta分布是因为它天然落在[0,1],不会有负SOC出现。起始时间做了嵌套概率采样:先随机决定一半车落入晚高峰,再在剩余车辆里按60%决定第二时段,这样能模拟“一波流”到达的聚集性。功率叠加用矩阵行代表车、列代表时间,最后sum成总功率,比循环内逐车累加更符合MATLAB的向量化习惯。

恒功率近似里我用0.9的额定效率折算,意思是平均90%的功率真正充进电池。实际上慢充桩交流侧功率会略高于桩端直流输出,这个差异会折算进充电时长,保证总电量不打折扣。如果你要更精细,可以按第2章的表拆成恒流、恒压两段,但做集群容量校核时,恒功率近似带来的误差远小于起始时间分布取错的误差,没必要一开始就上高精度模型。

4.3 从单次仿真到设计输入:重复500次看95%分位数

单次蒙特卡洛只是一天的一种可能场景。要让结论可信,一般是重复500次或1000次,统计每个时刻功率值的分布,然后取95%分位数作为设计值。95%分位数的含义是:按这个值选变压器,一年365天里只有大约18天的负荷会超过它,既能满足绝大多数运行日,又不至于把变压器容量抬得过高。

n_sim = 500; P_matrix = zeros(n_sim, n_steps); for k = 1:n_sim % 把上面第1~7步封装成函数后调用 P_matrix(k, :) = simulate_one_day(n_cars, dt); end % 逐时刻分位数 P95 = prctile(P_matrix, 95, 1); P50 = prctile(P_matrix, 50, 1); % 对比均值场景和恶劣场景 figure; plot(t_axis, P50, 'LineWidth', 1.5); hold on; plot(t_axis, P95, 'LineWidth', 2); legend('中位数负荷','95%分位负荷'); grid on; xlabel('时间(h)'); ylabel('功率(kW)'); title('蒙特卡洛负荷曲线分布');

95%曲线和50%曲线之间的空隙就是安全裕量,这个裕量通常在20%~40%之间,具体取决于起始时间分布的集中程度:分布越集中,峰值越陡,裕量越大。给领导汇报时,直接拿这两条曲线讲“平均值会掩盖风险,分位数才对应可靠度”,比一句“我乘了0.6同时率”要可解释得多。变压器容量建议按P95曲线的最大值上浮10%左右选型,为今后1~2年新增充电桩留点余量。

5. 充电功率计算常见问题与排查:五个必查现场

做充电功率计算的人,很多都不是专职做仿真的,可能是做配电设计、做新能源项目评估、做园区能源管理的工程师。这套计算说难不难,但坑基本都藏在数据定义和参数取值里。下面五条是我在项目里真实遇到过的现场问题,按“现象→原因→解决”写,可以当排查清单用。

5.1 电量对不上电表:损耗和辅助功耗落在哪

现象:从充电曲线积分出来的日电量,比充电桩所在台区的电表读数少10%甚至更多。

原因:积分用的是车辆端功率或桩端直流侧输出功率,没算交流到直流的变换效率,也没加桩的辅助电源功耗。交流慢充尤其严重,7kW桩实际交流侧输入可能到8kW,多出来的是车载充电机效率和桩待机功耗。直流快充也有液冷散热系统,夏天额外吃电。

解决:在积分结果上除以效率η,再加上辅机功耗,即P_grid=P_dc/η+P_aux。没有实测η时用第2章表格的中值,交流慢充取0.91,直流快充取0.94。做完这一步再对一次电表数,误差一般能压到3%以内。排查时先看平台导出的字段说明,确认功率列是直流侧还是交流侧,这个定义搞错了,后面所有修正都白做。

5.2 峰值功率永远是“额定功率之和”

现象:把各桩额定功率简单相加,得到站点总负荷60+60+120=240kW,实际监控显示整站功率从来没超过150kW。

原因:忽略了桩群共享功率模块的动态分配。三根快充枪共用一个240kW整流柜,但车辆BMS请求功率通常达不到额定值,同时率远低于1。而且充电桩有总功率上限保护,四辆车同时大功率请求时,系统会按优先级切负荷。

解决:在仿真模型里加总功率上限约束,用“先满足SOC最低的车”的优先分配逻辑。这一步能直接把峰值压下来,但总电量不会减少,只是推迟了充电完成时间。容量校核时,同时率系数要用蒙特卡洛算出,而不是经验拍数。如果监控数据和仿真差很多,优先去问桩企的功率分配策略,不同厂商的分配算法差异很大。

5.3 冬季功率断崖式下降

现象:同样一款车、同一个桩,夏天能跑到60kW,冬天凌晨只有20kW,充满时间拉长一倍。

原因:低温下电池内阻增大,BMS主动限制充电电流和功率,这是保护电池的正常策略。数据里如果混入冬季记录,温度影响会让集群功率模型的误差明显变大。

解决:引入温度折损系数。零上5~25℃按额定功率的90%~100%折算;0~5℃降到70%;零下5~0℃降到60%;低于零下5℃,很多车型被限定到40%以下。这个系数表可以从当地气象数据的月均最低温做粗估,有实测曲线后用拟合函数替换。冬季容量校核才安全,夏季则不需要这个折损,注意按季节分别跑场景。

5.4 用平均功率代替峰值功率做设计

现象:算出来平均负荷80kW,变压器选了100kVA,看起来有20%裕量,夏季却连续报过载。

原因:平均功率是能量指标,峰值功率才是容量指标。充电负荷集中在晚间几小时,平均到24小时就会虚低。峰谷电价推行之后,用户更爱集中在谷时段充电,这个效应更明显。

解决:只看充电活跃期的峰值功率,不看全天平均。校核变压器容量时,用蒙特卡洛95%分位数曲线的最大值作为设计值,再结合第3章的半小时曲线观察峰值持续时间。还要注意,峰谷电价下夜间谷段负荷可能比晚高峰还高,要单独统计夜间段的峰值。

5.5 时间序列排序错误导致曲线乱跳

现象:绘制日负荷曲线时,功率值忽高忽低,完全没有规律,看起来像随机噪声。

原因:运营平台导出的CSV行序是随机的,或者车端时间与服务端时间有几分钟偏差,直接按行序画图当然乱。

解决:读入后先转datetime,再sortrows。如果有两个功率来源的时间戳相差3~5分钟,先做重采样对齐再合并,否则叠加时会错峰。还要留意时区,有的平台导出的是UTC,白天记录全部偏移8小时。处理时间是这类计算里最不性感但最容易翻车的一环,建议在一开始就规范化,做成脚本函数,每次读数据直接调用,不要每次手动改。

6. 用功率曲线反推充电行为:一个快速验证技巧

6.1 从实测曲线反推起始时间的分布设置

已经有一条实测功率曲线,想验证第4章里哪些参数取错了,最有效的方法不是直接改参数重跑蒙特卡洛,而是反向看曲线特征。晚高峰曲线如果比仿真提前一小时达峰,说明你的起始时间分布均值设得太早;实测曲线峰值比仿真高但持续时间短,意味着真实的起始SOC比仿真的更低,大家进站时电池更空。用曲线峰值时刻和半峰宽度两个指标来反推,比逐点拟合要稳得多,也不容易过拟合。

% 读取实测聚合曲线,假设为timetable格式,列名power_kw load_measured = readtimetable('site_measured.csv'); % 计算峰值功率和峰值时刻 [peak_val, idx] = max(load_measured.power_kw); peak_time = load_measured.Time(idx); % 计算半峰宽度:功率超过峰值一半的持续小时数 half_threshold = peak_val / 2; above_half = load_measured.power_kw >= half_threshold; half_width_h = sum(above_half) * hours(0.5); % 假设步长0.5小时 fprintf('峰值功率: %.1f kW\n', peak_val); fprintf('峰值时刻: %s\n', peak_time); fprintf('半峰宽度: %.1f h\n', half_width_h);

半峰宽度这个量很实用。实测是2小时,仿真出来是4小时,说明起始时间分布太过分散,实际用户是“一波流”同时到站,不是均匀铺开。根据这个判断去修起始时间分布参数,把晚高峰时段的标准差收窄到1~1.5小时,再回代蒙特卡洛,通常两次迭代就能让半峰宽收敛到实测值附近。

6.2 用MAE和峰值误差做最终确认

迭代两轮之后,用平均绝对误差MAE和峰值误差做最终确认。这两项能直接告诉你模型偏在哪:峰值误差偏大,优先调起始SOC分布;曲线形状错位,优先调起始时间;整体偏低,调充电效率η。多调几轮之后,你会对这个站点的充电行为心里有数,这套方法比换复杂时序模型实用得多,也不容易把噪声学进去。

最后讲一个自己的教训。帮一个园区做慢充桩容量校核那次,我一开始只算了平均负荷,给物业交“装8台7kW桩配100kVA变压器”的结论。夏天连续几晚变压器负载率冲到95%以上,物业半夜打电话来问怎么回事。补跑了一轮蒙特卡洛才发现,问题出在这批用户下班时间高度集中在18:30左右,95%分位数负荷接近130kW。换成160kVA之后,再没出现过载。那次之后我养成两个习惯:第一,任何容量结论之前先跑500遍蒙特卡洛看分位数;第二,时间分布永远是第一输入参数,效率取0.93还是0.94这种精度纠结可以放后面。希望这套思路和坑能帮到你。

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

返回列表