第一篇:基于MATLAB的发动机万有特性曲线绘制方法_图文(精)
=设计研究 > 基于 MATLAB 的发动机万有特性曲线绘制方法 周广猛 1 , 郝志刚 2 , 刘瑞林 1 , 陈 东 3 , 管金发 1 , 张春海 4(1.军事交通学院 汽车工程系 , 天津 300161;2.军事交通学院 训练部 , 天津 300161;3.军事交通学院 基础部 , 天津 300161;4.兰州军区 军械汽车技工训练大队 , 陕西 西安 710111 摘要 :利用 MATLAB 数学运算能力 , 处理发动机性能试验数据 , 方法简单可靠 , 绘制后的万 有曲线直观明了 , 把等燃油消耗率曲线、外特性曲线和等功率曲线较好地拟合在同一张图上 , 拟合程度较高。
关键词 :MATLAB;万有特性曲线;绘图
中图分类号 :TK402 文献标识码 :A 文章编号 :1673-6397(2009 02-0034-03 Universal Characteristics C urve Plotting Method based on MATLAB Z HO U Guang-me ng 1 , H AO Zhi-gang 2 , LI U Rui-lin 1 , C HE N Dong 3 , GUA N Jin-fa 1 , Z HANG C hun-hai 4(1.Automobile Engineering Department, Academy of Military Transportation, Tianjin 300161, China;2.Training Department, Acade my of Military Transportation, Tianjin 300161, China;3.General Course Department, Academy of Military Transporta tion, Tianjin 300161, China;4.Ordnance Mechanic Training Brigade, Lan Zhou Theater, Xi.an 710111, China Abstract :Taking advantage of MATLAB mathematic operation, data from engine characteristic test was processed, the method is simple and credible, The universal characteristics curve plotted is intuitionistic and perspicuous, and was in good fit with data got in test.Key W ords :MATLAB;Universal Characteristics Curve;Plot :(, 男 , , , 引 言
为了能全面反映发动机的性能 , 把发动机的多 个参数画在一张图上而形成的多参数的特性曲线叫 做发动机的万有特性曲线
[1] , 传统用作图法制取万
有特性曲线是将不同转速下的负荷特性曲线绘制在 同一张坐标图上 , 形成曲线簇 , 然后从曲线簇上把等 油耗点逐一投影到万有特性图上 , 并圆滑地连接成 等油耗曲线 , 再做出等功率曲线 , 画出外特性曲线 , 进而得到发动机的万有特性曲线 , 这种万有特性曲 线的手工绘制方法费时费力 , 难以保证数据和图形 的精度
[2] , 而 MATLAB 软件具有强大的矩阵计算和 数据可视化能力 [3] , 为万有特性曲线的绘制提供了 一种新的方法。国内开展了利用 MATLAB 进行万有 特性曲线绘制的研究 , 由于外特性曲线拟合较为简
单 , 方法较为成熟 , 研究的重点多集中在等燃油消耗 率曲线的拟合与绘制上 , MATLAB 中提供了二元插 值函数、三次插值、V4插值等多种插值方法 , 但要求 数据间隔要足够小 , 而且对周围节点的精度要求高 , 个别数据点的误差有可能造成数据畸变 [4]。由洛阳 凯迈机电有限 公司开发的 FST2D 发动 机控制系统 利用 MATLAB 的计算引擎 , 可以利用发动机试验数 据绘制万有特性曲线 , 但对试验点的密度和准确度 仍然要求较高 [5]。而文中所采用的方法能够很好地 解决这个问题。其它方法如神经网络拟合方法需要 重新训练网格 , 比较繁琐;从一元样条非张量积形式 推广到薄板样条形式可较好光滑曲线 , 但易出现多 个插值点 [6];本文中利用的最小二乘法原理 , 采用多 元线性回归的方法 , 但随着拟合条件增加 , 也有产生 奇点的可能。但在试验点采集受限等条件限制下仍
2009年第 2期(总第 110期 内 燃机与动力装置 I.C.E &Powerplan t 2009年 4月
不失为一个较好的手段。
1利用 MATLAB 绘制万有特性曲线的过程 以转速为横坐标、平均有效压力(或扭矩 为纵 坐标的万有特性曲线运用最广 [7], 绘制该万有特性 曲线需要画出等燃油消耗率曲线、等功率曲线和边 界线 , 具体绘制方法如表 1所示。
表 1发动机万有特性曲线绘制方法
线型 绘制方法 采用(建立 的模型 拟合方式 MATLAB 命令(参数 等 燃 油 消 耗 率 曲线 先建 立 燃 油消 耗 率 与转 速 和 扭 矩的 关 系 模 型 , 绘 出 三 维 曲 面 图 , 再生成二维的 等值线图。b e =f(T tq , n 最小 二乘 法原 理 , 多 元 线性回归
meshgrid mesh contour NaN 边界线 根据 发 动 机外 特 性 曲线 的 数 据 绘制边界线。
T tq =f(n 样 条插值拟合 interp1plot 等功率曲线 公式 P e =T tq n P 9550绘制 , 绘出三
维曲面图 , 再生成二维等值线图 T tq =f(n 样 条插值拟合 interp1NaN 发动机负荷特性试验的数据并不是矩阵格式 , 需要首先将它们转化为绘制 MATLAB 所识别的、绘 制 三 维 图 形 的 矩 阵 格 式 [8], 才 能 绘 制 出 转 速
n(r P min、有 效 扭 矩 T tq(N #m 和 燃 油 消 耗
率
b e(gP(kW #h 的三维曲面图 , 再利用 MATLAB 语言 里的 contour 语句生成二维的等值线图(相当于用不 同的 T tq-n平面去截 b e、n、T tq 的三维曲面图 , 进而 得到发动机的等油耗曲线 , 而等油耗曲线模型的建 立实际上是建立燃油消耗率 b e 与转速 n 和平均有 效压力 P me 的函数 , 采用多元线性回归的方法进行曲 面拟合。
边界线的绘制实际上是把由外特性试验得到的 T tq、n 数据绘制在平面上 , 形成 T tq-n 关系曲线 , 构 成发动机万有特性曲线的边界线 , 此时油量调节机 构固定在标定循环供油量位置 , 万有特性曲线上的 转速和扭矩不可能超出边界线的范围。
根据公式 P e =T tq n P 9550, 选择不同的 T tq、n , 利 用 interp1进行拟合 , 得到函数 P e =f(T tq , n , 绘制 得到三维曲线 ,利用 contour 命令得到的双曲线即是 等功率曲线。2模型的建立
2.1等油耗消耗率曲线模型的建立 根据多元线性回归理论 , 建立模型如下 : b el
b e2 ,b = 1n 1T tq 1n 21n 1T tq1T 2tq1, n l 1n l-11T tq 1, T l tq 1 1n 2T tq 2n 22n 2T tq2T 2tq2, n l 1n l-12T tq 2, T l tq 2 , , , , , , , , , 1n N T tqN n 2N N N T tq N T 2tq N , n l 1n l-1N T tqN , T l @ a 0 a 1 , a k 1400 1600 1800 2000 T tq P N #m b e g #(k W #h-1 T tp P N #m b e g #(kW #h-1 T tq P N #m b e g #(kW #h-1 T tq P N #m b e g #(k W #h-1 399.8222.8409.1222.0408.3226.0425.6206.5354.1
220.4365.7221.7368.3225.3380.3231.1318.5232.4328.3235.4328.3226.4332.7231.1278.1228.5284.1226.5289.0233.9290.9233.0236.2227.8243.7230.5244.4242.1244.4242.0203.6232.6203.2236.8208.8283.3205.1244.9185.3248.5164.3249.1167.7253.9160.2265.0157.2245.9123.9276.1132.1271.4114.5299.8117.2272.483.5407.989.5323.568.8398.080.8 329.7 39.7 487.0 46.1 468.6 30.7 596.8 2200 2400 2600 2800 T tq P N #m b e g #(k W #h-1 T tp P N #m b e g #(kW #h-1 T tq P N #m b e g #(kW #h-1 T tq P N #m b e g #(k W #h-1
420.7234.7404.6174.2378.0256.9315.6257.9379.6259.8360.5242.2344.7253.7275.5295.3334.6235.5322.7252.1310.3253.5242.5282.4291.6237.6283.0287.4264.3260.0210.3288.7244.4242.8243.3253.6226.1303.8178.5301.9202.8292.3205.5263.6186.8280.7145.6329.7157.5277.9162.1290.6154.2300.6118.6357.0116.0308.7124.7316.8115.3346.672.6475.474.1396.286.8378.076.3435.652.8580.337.8 605.9 52.4 518.8 34.1 812.9 22.4 1080.1图 1 等燃油 消耗率曲线和等功率曲线的三维拟合图 图 2 万有特性曲线(下 转第 48页
#36#内燃机与动力装置 2009年 4月
性 消声器进行消声实验 , 并且记录下相应数据;在保持 同 一工况转速的情况下 , 接通电源 , 有源消声部分开始 工 作 , 再次记录相应数据。根据摩托车发动机排气噪 声的频谱特征及有源消声的特点 , 本实验系统主要针 对基频噪声及其一次谐波噪声进行控制 , 从实验结果 看其消声效果还是比较理想 , 由于消声器特有的消声 方 式 , 对高频部分也具备一定消声效果。基于扬声器 参 数的限制 , 下限暂 定为 125Hz。
表 1 降噪的实验结果 f P Hz 125 ***000LP1P dB 827866656155LP2P dB 666451605954$LP P d B 16 14 15 5 2 1 表 1中 LP1指的是原有抗性消声器的消声效果 , LP2指的是带 有有源消声部分的总的消声效果 , $LP 指 的 是有源消声部分所达到的消声效果。在理想条件 下 , 各个频率点的消 声指数应为无穷大 , 但是由于幅值 和 相位的偏差 , 传声 器、扬声器和电路中一些元器件的 延 时和非线性 , 对噪 声消除能力都有不同程度的影响 , 使得末端还保留一定的残余噪声 , 另外消声器管道两 端 实际存在的声反射对实 验结果也有一定影响。结束语
(1针对内燃机排气噪声的特点 , 提出了基于模拟 电子技术的有源消声系统 , 该系统把有源消声和无源 消声相结合 , 在不影响中高频消声效果的前提下 , 对低 频段噪声消声 效果明显。
(2虽然受传声器、扬声器等器件好坏和非线性的 影响 , 但 在实验消声过程中采取了较好的匹配措施 , 信 号处理部分采 用纯模拟电路 , 实时性好 , 消声效果未受 到很大影响 , 可以实现宽带消声。参考文献 :
[1]葛维晶 , 王伟生 , 张宝欢.摩托车发动机排气消声器的研究 与设计 [J].小型内燃机 , 1994, 23(3 :37-41.[2]冯振东 , 宋 传学.车内噪声主动控 制系统初探.汽 车工程 , 1991, 13(4 :202-207.[3]吴斌.发动机排气自适应有源消声关键技术的研究 [D]:[学 位论文 ].北京 :北京工业 大学机械工程与应 用电子技术学 院 , 2001, 13-37.[4]Krause P, Welten s H.Ad vanced design of automotive exhaust silencer systems[C].SAE Paper 922088, 1992.[5]Kim Heung-Seob, Hong Jin-Seok, Sohn Dong-Goo, et al.Develop men t of an Acti ve Muffler System for Reduci ng E xhaust Noise and Flow Restriction in a Heavy Vehicle [J].Noise Control Engineering Journal,1999, 47(2 :57-63.(上接第 36页 4 结 论
(1MATLAB 强大 的数学运算能力 , 方便实用的绘 图 功能为发动机万有特性 曲线的绘制提供了一个很好 的 途径 , 利用 MA TLAB 绘制万有曲线 , 作图方法简单 , 拟 合程度高 , 提高了 数据处理的速度和精度 , 为发动机 动 力性、经济性的研究 , 发动机参数的标定 , 发动机与 传 动系的匹配提供了更可 靠的依据;(2与其它利用 MA TLAB 绘制万有特性的方法相 比 , 文章所述的方法 能够很好地把等油耗曲线、等功率 曲线及外特性曲线拟合在一张图上 , 图像更加直观可 靠;(3该绘图方法可以利用 MA TLAB 图形用户界面 设计技术进行进一步处理 , 进而完成该绘图方法的图 形 界面设计。同时可以 进一步探索利用更好的曲线拟 合 方法 , 或采取分段 拟合方法 , 进一 步提高拟合程度。参 考文献 :
[1]孙凤英 , 汽车性能与使用技术 [M].北京 :机械工业出 版社 , 2002.[2]易雪梅 , 吴伶.用 MA TLAB 语言绘制发动机万有特性的两种 方法 [J].北京汽车 ,2005(5 :33-35.[3]李金辉 , 徐立友.基于 MA TLAB 语言的发动机特性研究 [J].汽 车科技 , 2005(3 :40-42.[4]倪计民 , 陈源.MA TLAB 软件在汽车动力传动系匹配计算中的 应用 [J], 上海汽车 ,2003:24-27.[5]洛阳凯迈机电有限公司 , FS T2D 系统使用说明书 [Z].洛阳.[6]李小华 , 罗福强 , 汤东.多项式插值法绘制发动机万有特性曲 线 [J].农业工程学报 , 2004,20(5:138-141.[7]董敬.汽车拖拉机发动机 [M].北京 :机械工业出版社 , 2004, 149.[8]苏金明 , 阮沈勇.MA TLAB 实用教程 [M].北京 :电子工业出版 社 , 2005.[9]Curtis F.Gerald, Patrick O.Wheatley.Applied Nu merical Analysi s [M].Beijing:HigherEducation Press, 2006.[10]关志伟 , 杨玲 , 施继红.基于 MA TLAB 语言的发动机万有特 性研究 [J].吉林农业大学学报 , 2003,25(3 :339-342.[11]薛定宇 , 陈阳泉.基于 MA TLAB P Simulink 的系统仿真与应用 [M].北京 :清华大学出版社.2002.#48#内燃机与动力装置 2009年 4月
第二篇:如何用matlab绘制电机效率map图或发动机万有特性曲线
如何用matlab绘制电机效率map图或发动机万有特性曲线
前段时间写论文,需要绘制电机效率map图,其实和发动机万有特性曲线一样。
看了好多资料都不会,问问师兄也没具体画过。困惑中查到貌似有几个软件可以画map图,由于我比较熟悉matlab,就选用它了,可是matlab也不知道咋画呀,我查看了matlab图形处理这一块,突然发现等高线图绘制,咦???这不就是高中地理学的吗???和map图万有特性图本质一样吗???就是contour函数啦,惊喜万分
5.2.13 等值线图
等值线图可用于绘制地理数据中的等高图、气象数据中的等势图等。等值线图在二维图形中把第三维中相同大小的数据连接为等值线,一定程度上可以表示第三维的信息,同时等值线图相比三维图更容易观察数据之间的关系,被广泛的应用于各个领域。
MATLAB中提供了一系列的函数用于绘制不同形式的等高线图,其中包括: 1.contour()函数
contour()函数可用于绘制二维等值线图,函数的调用格式为:
contour(z):输入数据z为二维矩阵,绘制数据z的等值线,绘图时等值线的数量和数值根据矩阵z的数据范围自动确定。
contour(z,n):绘制等值线图,设置等值线数目为n。
contour(z,v):绘制等值线图,向量v设置等值线的数值。
contour(x,y,z):绘制矩阵z的等值线图,输入参数x、y用于指定绘制的等值线图的坐标轴数据,同时输入数据x、y、z必须为大小相等的矩阵。 contour(x,y,z,n):为指定坐标轴的等值线图设置等值线的数目n。 contour(x,y,z,v):为指定坐标轴的等值线图设置等值线的数值v。 contour(...,LineSpec):输入参数LineSpec用于设置等值线的线型。 [c,h] = contour(...):返回contour()函数绘制的等高线图中的等值线的数值标签c和包含所有图形对象的句柄h; 2.contourf()函数
contourf()函数用于绘制带填充的二维等值线图。即在contour()函数绘制的等值线图上,将相邻的等值线之间用同一种颜色填充,不相邻的等值线之间填充有不同的颜色,填充用的颜色决定于当前的色图颜色。函数contourf()的调用格式同contour()。
3.clabel()函数
clabel(c,h):在句柄h指定的等值线图上的等值线上添加数据标签c。 clabel(c,h,v):在指定的等值线值v上显示数据标签c。
clabel(c,h,'manual'):手动方式设置等值线的数据标签。当运行该命令后,等值线图中将出现十字连线,用户用鼠标左键或空格键在最接近指定位置上放置数据标签,回车键结束该操作。
clabel(c):在当前的等值线图上添加数据标签c。 clabel(c,v):在当前的等值线图上添加数据标签c,并指定数据标签所加的等值线值v。
clabel(c,'manual'):用户手动方式为当前等值线图添加数据标签。另外,函数ezcontour()和ezcontourf()可以直接绘制函数表达式的等值线图,感兴趣的读者可以查阅MATLAB的相关帮助文档。红字是我自己的数据。[c,h]=contour(speed,torque,efficient,28)clabel(c,h,[92.046,91.115,90.184,89.253,88.322,86.460,84.598,81.806,80.874,74.356,70.632])x=500:5:2000;y=172;hold on plot(x,y)x1=2000:5:6000;y1=0.000002708*x1.^2-0.04766*x1+256.488;Hold on Plot(x1,y1)title('电机效率map图(%)')【例5.32】等值线图的绘制。
z=peaks;
%函数peaks用于生成图形绘制的示例数据 [c,h] = contour(z);
%生成数据矩阵z的不带填充的二维等值线图 title('一般二维等值线图的绘制')
clabel(c,h);
%为二维等值线图添加数据标签 colorbar
%添加等值线图的颜色条 title('一般二维等值线图的绘制(添加数据标签)')
figure;
v=[min(z(:)):2:max(z(:))];
[c,h] = contourf(z,v);
%绘制带填充的二维等值线图,并设置等值线向量v clabel(c,h);
%为二维等值线图添加数据标签 colorbar
%添加等值线图的颜色条 title('带填充的二维等值线图的绘制')
figure;
[c,h] = contourf(z,5);
%绘制带填充的二维等值线图,并设置等值线条数为5 title('二维等值线图手动添加等值线标签')
clabel(c,h,'manual');
%为二维等值线图手动添加数据标签
运行上述程序,显示如图5.44所示的图形。
图5.44(a)
等值线图的绘制
图5.44(b)
等值线图的绘制
图5.44(c)
等值线图的绘制
图5.44(d)
等值线图的绘制
看到等值线图是不是很惊喜????
我们再画map图时,需要定义等维数3个矩阵,speed=[ ];torque=[];efficient[];[c,h]=contour(speed,torque,efficient,28);//因为我发现28比较好看。
clabel(c,h,[92.046,91.115,90.184,89.253,88.322,86.460,84.598,81.806,80.874,74.356,70.632])后面就是细节啦。下面是没经过处理的结果
第三篇:Bezier曲线的绘制和拼接实验报告
Bezier曲线的绘制实验报告
一、程序实现环境
1操作系统:Windows XP、Windows7 2.编程语言:C++ 3.程序实现环境:Visual C++ 6.0
二、算法思想
三、使用说明
程序界面如下图:
用户可以在编辑框中输入4个控制点的坐标,也可以通过在绘图区内直接通过鼠标的单击指定4个控制点的位置,输入4个控制端点后,单击“画Bezier曲线”按钮即可绘制Bezier曲线。
四、实验结果
五、程序代码(关键代码)
void CMFC_BezierCurve2Dlg::OnLButtonDown(UINT nFlags, CPoint point){ if(pointOrd==1)
//原点(490,270){
m_p1_x = point.xpoint.y;} if(pointOrd==2){
CDC *pDC=GetDC();
pDC->MoveTo(490+m_p1_x, 270-m_p1_y);
pDC->LineTo(point.x, point.y);
m_p2_x = point.xpoint.y;} if(pointOrd==3){
CDC *pDC=GetDC();
pDC->MoveTo(490+m_p2_x, 270-m_p2_y);
pDC->LineTo(point.x, point.y);
m_p3_x = point.xpoint.y;} if(pointOrd==4){
CDC *pDC=GetDC();
pDC->MoveTo(490+m_p3_x, 270-m_p3_y);
pDC->LineTo(point.x, point.y);
m_p4_x = point.xpoint.y;} pointOrd++;UpdateData(FALSE);
CDialog::OnLButtonDown(nFlags, point);}
voidGetCnk(int n, int *c){ inti,k;for(k=0;k<=n;k++){
c[k]=1;
for(i=n;i>=k+1;i--)c[k]=c[k]*i;
for(i=n-k;i>=2;i--)c[k]=c[k]/i;} }
void CMFC_BezierCurve2Dlg::GetPointPos(intControlN, double t, int *c){ int k, n=ControlN-1;double Bernstein;Pt.x=0.0;Pt.y=0.0;for(k=0;k Bernstein=c[k]*pow(t,k)*pow(1-t,n-k); Pt.x += ControlP[0][k].x * Bernstein; Pt.y += ControlP[0][k].y * Bernstein;} } void CMFC_BezierCurve2Dlg::OnButtonDrawBeziercurve(){ UpdateData();pointOrd=1;CDC *pDC=GetDC();ControlP[0][0].x=m_p1_x;ControlP[0][0].y=m_p1_y;ControlP[0][1].x=m_p2_x;ControlP[0][1].y=m_p2_y;ControlP[0][2].x=m_p3_x;ControlP[0][2].y=m_p3_y;ControlP[0][3].x=m_p4_x;ControlP[0][3].y=m_p4_y; pDC->MoveTo(490+m_p1_x, 270-m_p1_y);pDC->LineTo(490+m_p2_x, 270-m_p2_y);pDC->LineTo(490+m_p3_x, 270-m_p3_y);pDC->LineTo(490+m_p4_x, 270-m_p4_y); int *C, i;intControlN=4, m=500;C=new int[ControlN];GetCnk(ControlN-1, C);for(i=0;i<=m;i++){ GetPointPos(ControlN,(double)i/(double)m, C);pDC->SetPixel(490+Pt.x, 270-Pt.y, 255);} } 两段Bezier曲线的拼接实验报告 一、程序实现环境 1操作系统:Windows XP、Windows7 2.编程语言:C++ 3.程序实现环境:Visual C++ 6.0 二、算法思想 三、使用说明 程序界面如下图: 用户可以在编辑框中输入4个控制点的坐标,也可以通过在绘图区内直接通过鼠标的单击指定4个控制点的位置,输入4个控制端点后,单击“画Bezier曲线”按钮即可绘制Bezier曲线。 分别绘制完两段Bezier曲线后,单击拼接即可实现两段曲线的拼接。 四、实验结果 五、程序代码(关键代码) void CMFC_BezierCurve2Dlg::OnLButtonDown(UINT nFlags, CPoint point){ if(pointOrd==1) //原点(490,270){ m_p1_x = point.xpoint.y;} if(pointOrd==2){ CDC *pDC=GetDC(); pDC->MoveTo(490+m_p1_x, 270-m_p1_y); pDC->LineTo(point.x, point.y); m_p2_x = point.xpoint.y;} if(pointOrd==3){ CDC *pDC=GetDC(); pDC->MoveTo(490+m_p2_x, 270-m_p2_y); pDC->LineTo(point.x, point.y); m_p3_x = point.xpoint.y;} if(pointOrd==4){ CDC *pDC=GetDC(); pDC->MoveTo(490+m_p3_x, 270-m_p3_y); pDC->LineTo(point.x, point.y); m_p4_x = point.xpoint.y;} pointOrd++;UpdateData(FALSE); CDialog::OnLButtonDown(nFlags, point);} voidGetCnk(int n, int *c){ inti,k;for(k=0;k<=n;k++){ c[k]=1; for(i=n;i>=k+1;i--)c[k]=c[k]*i; for(i=n-k;i>=2;i--)c[k]=c[k]/i;} } void CMFC_BezierCurve2Dlg::GetPointPos(intControlN, double t, int *c){ int k, n=ControlN-1;double Bernstein;Pt.x=0.0;Pt.y=0.0;for(k=0;k Bernstein=c[k]*pow(t,k)*pow(1-t,n-k); Pt.x += ControlP[pointGroup][k].x * Bernstein; Pt.y += ControlP[pointGroup][k].y * Bernstein;} } void CMFC_BezierCurve2Dlg::BezierCurve(){ CDC *pDC=GetDC();pDC->MoveTo(490 + ControlP[pointGroup][0].x, 270ControlP[pointGroup][1].y);pDC->LineTo(490 + ControlP[pointGroup][2].x, 270ControlP[pointGroup][3].y); int *C, i;intControlN=4, m=500;C=new int[ControlN];GetCnk(ControlN-1, C);for(i=0;i<=m;i++){ GetPointPos(ControlN,(double)i/(double)m, C); pDC->SetPixel(490+Pt.x, 270-Pt.y, 255);} } void CMFC_BezierCurve2Dlg::OnButtonDrawBeziercurve(){ UpdateData();pointOrd=1; ControlP[pointGroup][0].x=m_p1_x;ControlP[pointGroup][0].y=m_p1_y;ControlP[pointGroup][1].x=m_p2_x;ControlP[pointGroup][1].y=m_p2_y;ControlP[pointGroup][2].x=m_p3_x;ControlP[pointGroup][2].y=m_p3_y;ControlP[pointGroup][3].x=m_p4_x;ControlP[pointGroup][3].y=m_p4_y; BezierCurve();pointGroup++;} void CMFC_BezierCurve2Dlg::OnButtonMatch(){ pointGroup--; double dx, dy;double k1, k2, s, s1, s2;int i;CPoint temp;dx = ControlP[pointGroup][0].xControlP[pointGroup-1][3].y;for(i=0;i<4;i++){ ControlP[pointGroup][i].x-= dx; ControlP[pointGroup][i].y-= dy;} k1=1.0*(ControlP[pointGroup-1][3].y-ControlP[pointGroup-1][2].y)/(ControlP[pointGroup-1][3].x-ControlP[pointGroup-1][2].x);k2=1.0*(ControlP[pointGroup][1].y-ControlP[pointGroup][0].y)/(ControlP[pointGroup][1].x-ControlP[pointGroup][0].x);if(k1>0){ if(ControlP[pointGroup-1][2].x s1 = atan(k1); else s1 = PI + atan(k1);} else if(k1<0){ if(ControlP[pointGroup-1][2].x s1 = 2*PI + atan(k1); else s1 = PI + atan(k1);} if(k2>0){ if(ControlP[pointGroup][0].x s2 = atan(k2); else s2 = PI + atan(k2);} else if(k2<0){ if(ControlP[pointGroup][0].x s2 = 2*PI + atan(k2); else s2 = PI + atan(k2);} s = s1(ControlP[pointGroup][i].y-ControlP[pointGroup-1][3].y)* sin(s)+ ControlP[pointGroup-1][3].x; temp.y =(ControlP[pointGroup][i].x-ControlP[pointGroup-1][3].x)* sin(s)+(ControlP[pointGroup][i].y-ControlP[pointGroup-1][3].y)* cos(s)+ ControlP[pointGroup-1][3].y; ControlP[pointGroup][i].x = temp.x; ControlP[pointGroup][i].y = temp.y;} BezierCurve();} 用Excel绘制标准曲线以及求未知含量的方法 将数据整理好输入Excel,并选取完成的数据区,并点击图表向导,如下图: 点击图表向导后会运行图表向导如下图,先在图表类型中选“XY散点图”,并选了图表类型的“散点图”(第一个没有连线的)。 点击“下一步”,出现如下图界面。如是输入是如本例横向列表的就不用更改,如果是纵向列表就改选“列”: 如果发现图不理想,就要仔细察看是否数据区选择有问题,如果有误,可以点击“系列”来更改,如下图: 如果是X值错了就点击它文本框右边的小图标,结果如下图: 在表上选取正确的数据区域,点击“下一步”,出现图表选项界面如下图,调整选项,以满足自己想要的效果: 点击“下一步”,一张带标准值的完整散点图完成,如下图: 现在要根据数据进行回归分析,计算回归方程,绘制出标准曲线: 先点击图上的标准值点,然后按右键,点击“添加趋势线”。如下图: 本例是线性关系,在类型中选“线性”,如下图: 点击“确定”,标准曲线回归画好: 回归后的方程是什么样呢?点击趋势线(也就是标准曲线)然后按右键,选趋势线格式,如下图: 在显示公式和显示R平方值(直线相关系数)前点一下,勾上。再点确定,公式和相关系数都出来了。如图: 由此标准曲线可得出浓度:切换到“选项”标签页,选择“显示公式”,确定。在图表中出现一个公式,即浓度对吸光度的关系。 在单元格中输入该公式(其中的X值用具体的单元格引用代替),即可根据该公式计算出样品的浓度。 有时候有的项目是成指数增加,散点图如下图: 从上图看并不相关,除了最大的一个点外其余的几乎都成了直线。这不难理解,因为对于10000000而言,10与10000都差不了多少。因此我们平时常使用半对数坐标纸画图。对于Excel,先点中Y坐标轴,再按右键,选“坐标轴格式”如下图: 将左下方的对数刻度选中,确定。完整的一个半对数标准曲线就做好了: 利用Excel制作标准曲线,如果认真调整参数可以得到不同的效果。绘图时最好用XY散点图。生成图表后,选择生成的曲线,之后在曲线上点击右键,选择“添加趋势线”,在“类型”中,选择最接近的曲线形式。比如你的曲线接近线性,则选择“线性”,若接近乘幂的形式,则选择“乘幂”,如果比较难判断,则选择“多项式”,并调整其阶数。 实验一:离心泵特性曲线实验 实验目的:(1)熟悉离心泵的操作 (2)测定单级离心泵在固定转速下的特性曲线 实验预习:(1)了解离心泵的启动与关闭方法。 (2)熟悉流量、压强等测量仪表的使用。仪器介绍:离心泵特性曲线实验装置 实验二:流体阻力实验 实验目的:(1)测定直管摩擦系数 (2)测定局部阻力系数 实验预习:(1)了解摩擦系数的测定方法。 (2)熟悉系统的排空以及流量、压强测量仪表的使用。仪器介绍:流体阻力测定实验装置 实验三:板框过滤实验 实验目的:(1)了解板框过滤机的构造和操作 (2)测定恒压过滤常数 实验预习:(1)了解板框过滤机的流程。 (2)熟悉过滤常数的测定方法。仪器介绍:板框压滤机过滤常数测定实验装置 实验四:气体强制对流传热实验 实验目的:(1)测定套管换热器空气的对流传热系数并整理准数关联式 (2)通过管型对比了解强化传热的途径 实验预习:(1)了解套管换热器的结构与操作。 (2)熟悉温度测量仪表的使用。仪器介绍:对流传热系数测定实验装置 实验五:筛板精馏塔实验 实验目的:(1)了解筛板精馏塔的结构流程与操作 (2)测定全回流操作条件下的全塔效率和单板效率 实验预习:(1)了解筛板精馏塔的操作方法。 (2)熟悉样品的提取与测量方法。仪器介绍:筛板精馏塔实验装置 实验六:干燥实验 实验目的:(1)了解气流常压干燥设备的基本流程和工作原理 (2)测定物料在恒定干燥条件下的干燥速率曲线 实验预习:(1)了解厢式干燥器的操作。 (2)熟悉样品干燥中质量与时间的测量方法。仪器介绍:洞道干燥实验装置第四篇:用Excel绘制标准曲线以及求未知含量的方法
第五篇:实验一:离心泵特性曲线实验