主要内容

光滑的表面适合调查燃料效率

这个例子展示了如何使用曲线拟合工具箱™适合一些汽车数据的响应面调查燃料效率。

工具箱提供了样本数据来自GTPOWER预测内燃机模型。模型模拟自然吸气火花点燃式,两升,内联四缸引擎。你可以适合表面光滑的洛斯这个数据找到最低比油耗。

数据集包括响应表面模型所需的变量:

  • 速度是每分钟的转数(rpm)单位。

  • 负载规范化缸气团(汽缸aircharge比最大自然吸气式缸aircharge在标准温度和压力)。

  • BSFC brake-specific油耗在克/千瓦时。的能量流,除以机械功率(燃油效率)。

目标是模型响应面找到最低BSFC速度和负载的函数。您可以使用此表面表,包括作为混合动力汽车的一部分,优化算法结合使用电动机和发动机。操作引擎尽可能高效燃料表必须操作引擎BSFC碗的底部附近。

加载和数据预处理

负载XLS电子表格中的数据。使用“基本”命令选择非windows®平台。

创建一个变量n一个数组中的所有数字数据。

n = xlsread (“Engine_Data_SI_NA_2L_I4.xls”,“如果NA 2 l预告”,,“基本”);

提取的变量n感兴趣的列。

速度= n (:, 2);LOAD_CMD = n (:, 3);负荷= n (:, 8);BSFC = n (:, 22);

处理数据拟合之前,找出最低BSFC从每个扫描值。数据点被组织在扫描速度/负载。

得到速度/负载网站的列表:

SL =独特((速度、LOAD_CMD),“行”);nRuns =大小(SL, 1);

对于每个速度/负载网站,发现网站的数据和提取的实际测量负载和最低BSFC。

minBSFC = 0 (nRuns, 1);负荷= 0 (nRuns, 1);速度= 0 (nRuns, 1);i = 1: nRuns idx速度= = = SL(我,1)& LOAD_CMD = = SL(我,2);minBSFC (i) = min (BSFC (idx));负载(i) =意味着(负载(idx));速度(i) =意味着(速度(idx));结束

适合一个表面

合适的表面预处理数据的燃油效率。

f1 =适合(minBSFC(速度、负载),“洛斯”,“正常化”,“上”)
局部加权平滑线性回归:f1 (x, y) =洛斯(线性)平滑回归计算p其中x是规范化的意思是3407年和1214年性病,y是归一化平均0.5173和std 0.1766系数:p =系数结构

情节适合

情节(f1(速度、负载),minBSFC);包含(“速度(RPM)”);ylabel (的负荷(%));zlabel (“最低BSFC(克/千瓦时)”);

删除问题点

检查产生的阴谋。

还有点BSFC是消极的,因为这些数据是由一个引擎模拟。

删除这些数据点通过保持点的问题范围(0,正无穷)。

= excludedata(速度、minBSFC“范围”[0,正]);f2 =适合(minBSFC(速度、负载),“洛斯”,“正常化”,“上”,“排除”,)
局部加权平滑线性回归:f2 (x, y) =洛斯(线性)平滑回归计算p其中x是规范化的意思是3443年和1187年性病,y是归一化平均0.521和std 0.175系数:p =系数结构

画出新的适合。注意排除点绘制红色十字架。

情节(f2(速度、负载),minBSFC,“排除”,);包含(“速度(RPM)”);ylabel (的负荷(%));zlabel (“最低BSFC(克/千瓦时)”);

放大

放大的部分感兴趣的z轴。

zlim([0,马克斯(minBSFC)])

你想操作引擎有效,所以创建一个等高线图的地区BSFC低。使用图函数,并指定参数名称/值对“风格”,“轮廓”

情节(f2(速度、负载),minBSFC,“排除”,,“风格”,“轮廓”);包含(“速度(RPM)”);ylabel (的负荷(%));colorbar

创建一个表的表面

生成一个表通过评估模型f2的网格点。

为表创建变量断点。

speedbreakpoints = linspace (1000、5500、17);loadbreakpoints = linspace (0.2, 0.8, 13);

生成的表值,评估模型的网格点。

[tSpeed, tLoad] = meshgrid (speedbreakpoints loadbreakpoints);tBSFC = f2 (tSpeed tLoad);

检查表的行和列的命令行。

tBSFC(1:2:最终,1:2:结束)
ans = 1到7列722.3280 766.7608 779.4296 757.4574 694.5378 624.4095 576.5235 503.9880 499.9201 481.7240 458.2803 427.7338 422.1099 412.1624 394.7579 364.3421 336.1811 330.1550 329.1635 328.1810 329.1144 333.7740 307.7736 295.1777 291.2068 290.3637 290.0173 287.8672 295.9729 282.7567 273.8287 270.8869 269.8485 271.0547 270.5502 273.7512 264.5167 259.7631 257.9215 256.9350 258.3228 258.6638 251.5652 247.6746 247.2747 247.4699 247.3570 248.2433 248.8139列8到9 532.1533 466.9610 396.3209 398.0199 335.3871 346.3882 286.3077 291.0075 269.6837 272.2054 258.0298 260.5269 249.0083 250.4165

表对原始模型的阴谋

网格模型表面显示了表断点。

h =情节(f2);h。EdgeColor =“没有”;持有网格(tSpeed tLoad tBSFC,“线型”,“- - -”,“线宽”2,“EdgeColor”,“k”,“FaceColor”,“没有”,“FaceAlpha”1);持有包含(“速度(RPM)”);ylabel (的负荷(%));zlabel (“最低BSFC(克/千瓦时)”);

检查表的准确性

视图之间的差异模型和表通过绘制他们细网格上的区别。然后,使用这个表和模型在预测精度来确定最有效的表的大小为你的精度要求。

下面的代码来评估模型在细网格和情节模型和表之间的区别。

[tfSpeed, tfLoad] = meshgrid (linspace (1000、5500、8 * 17 + 1),linspace (0.2, 0.8, 8 * 13 + 1));tfBSFC_model = f2 (tfSpeed tfLoad);tfBSFC_table = interp2 (tSpeed tLoad、tBSFC tfSpeed, tfLoad,“线性”);tfDiff = tfBSFC_model - tfBSFC_table;冲浪(tfSpeed tfLoad tfDiff,“线型”,“没有”);持有网格(tSpeed tLoad 0(大小(tBSFC)),“线型”,“- - -”,“线宽”2,“EdgeColor”,“k”,“FaceColor”,“没有”,“FaceAlpha”1);持有包含(“速度(RPM)”);ylabel (的负荷(%));zlabel (模型的区别和表(克/千瓦时)”);标题(sprintf (“最大的区别:% g”马克斯(abs (tfDiff (:)))));

创建一个表包括断点值数组

创建表后评估模型适合的网格点,它可以从MATLAB有用导出表数据。在出口之前,创建一个表数组,包括断点值在第一行和列。下面的命令会重塑你的数据表格格式:

  • X (speedbreakpoints)是一个(1 x M)向量

  • Y (loadbreakpoints)是一个(N x 1)向量

  • Z (tBSFC)是一个(M x N)矩阵

表= [{“负载\速度”},num2cell (speedbreakpoints (:)。”)num2cell (loadbreakpoints (:)), num2cell (tBSFC)];

表导出到电子表格文件

您可以使用xlswrite函数导出表数据到新的Excel电子表格。执行以下命令创建一个电子表格文件。

xlswrite (“tabledata.xlsx”、表)

创建一个查找表

如果你有模型®软件,您可万博1manbetx以创建一个查找表块如下。执行以下代码来试试。

1。创建一个模型与二维查找表。

万博1manbetx仿真软件new_system (“my_model”)open_system (“my_model”)add_block (模万博1manbetx型/查找表/二维查找表的,“my_model / surfaceblock”)

2。查找表填充速度断点、负载断点,和一个查找表。

set_param (“my_model / surfaceblock”,“BreakpointsForDimension1”,“loadbreakpoints”,“BreakpointsForDimension2”,“speedbreakpoints”,“表”,“tBSFC”);

3所示。检查查找表填充块。