科学网

 找回密码
  注册

tag 标签: 曲线

相关帖子

版块 作者 回复/查看 最后发表

没有相关内容

相关日志

一种基于反馈补偿的参数曲线数控插补算法
bshen 2012-3-30 09:46
沈斌、欧阳华兵、闫广超.一种基于反馈补偿的参数曲线数控插补算法.机械工程学报, 2010 年第 46 卷第 15 期 :136-141 A CNC Interpolation Algorithm for Parametric Curves Based on Feedback Compensation.Journal of Mechanical Engineering,2010,Vol.46(15): 136-141 ( A CNC interpolation algorithm for parametric curves based on feedback compensation Shen, Bin (School of Sino-German, Tongji University, Shanghai 200092, China); Ouyang, Huabing ; Yan, Guangchao Source: Jixie Gongcheng Xuebao/Journal of Mechanical Engineering , v 46, n 15, p 136-141, August 5, 2010 Language: Chinese Database: Compendex ) , CSCD, EI : 20103613222416
个人分类: 学术论文|2352 次阅读|0 个评论
[转载]关于Origin的多项式拟合
willzhang198 2012-3-24 22:03
[转载]关于Origin的多项式拟合
Origin软件提供了多种非线性拟合工具,可以在“分析”菜单栏下找到。其中的多项式拟合对于许多不规则的函数曲线有比较好的拟合功能,一般需要选择合适的阶数才能达到比较好的拟合效果。下面针对一个实际例子,说明在应用多项式拟合功能时需要注意的问题。以某两列数据为例,其图形如下图: 上图中空白圆点为给定的数据点,而红线为多项式拟合得到的曲线,其项数取为9阶,对应的多项式表达式为: Y =-0.19458+1.80324E-4*X-5.26164E-9*X^2-7.17185E-13*X^3+4.99335E-17*X^4 -1.3961E-21*X^5+2.11857E-26*X^6-1.83728E-31*X^7+8.59577E-37*X^8-1.68907E-42*X^9 相关系数R^2=0.99179,与给定数据点拟合很好。但使用该表达式时需要特别注意,在X比较大的情况下,多项式的高次项将会对计算结果产生较大的影响。图中的红点是采用上述表达式得到的对应X点处的Y值,在X=80000时,函数值即与实验点和曲线发生了较大偏离。很明显,这是由于小数点舍入误差的原因造成的,因此,这个表达式还不能应用。否则在取较大X值时将产生发散现象。对于这个问题,有两种处理方法: 1、加大多项式中小数点后的位数,从而保证精度; 2、适当降低多项式的阶数,将高次项的影响降低,从而得到合理的曲线。 第一种方法这里不再述及,给出第2种处理方法。如下图: 从上图可以看出,按阶数=6得到的表达式可以应用。用Fortran计算得到的离散点(红点)与实验数据吻合的也较好。附Fortran程序: program test implicit none integer x,y,time,tmax real ft,A,b1,b2,b3,b4,b5,b6 parameter(A=-0.36515,B1=2.84281E-4,B2=-2.36972E-8,B3=7.33018E-13,B4=-1.07321E-17,B5=7.56699E-23,B6=-2.07544E-28) open(unit=10,file='ft.txt') tmax=100000 do time=0,tmax,10000 ft=A+B1*(time)+B2*(time)**2.0+B3*(time)**3.0+B4*(time)**4.0+B5*(time)**5.0+B6*(time)**6.0 write(10,*) time,ft enddo close(10) end 从上面的实例可以看出,在进行多项式拟合时,多项式阶数的选择是比较关键的。
6927 次阅读|0 个评论
[转载]ROC曲线(Receiver Operating Characteristic Curve)
flyada 2012-3-23 09:45
From Wikipedia: http://en.wikipedia.org/wiki/Receiver_operating_characteristic 分类模型尝试将各个实例(instance)划归到某个特定的类,而分类模型的结果一般是实数值,如逻辑回归,其结果是从0到1的实数值。这里就涉及到如何确定阈值(threshold value),使得模型结果大于这个值,划为一类,小于这个值,划归为另一类。 考虑一个二分问题,即将实例分成正类(positive)或负类(negative)。对一个二分问题来说,会出现四种情况。如果一个实例是正类并且也被预测成正类,即为真正类(True positive),如果实例是负类被预测成正类,称之为假正类(False positive)。相应地,如果实例是负类被预测成负类,称之为真负类(True positive),正类被预测成负类则为假负类(false negative)。 列联表如下表所示,1代表正类,0代表负类。     预测       1 0 合计 实际 1 True Positive(TP) False Negative(FN) Actual Positive(TP+FN) 0 False Positive(FP) True Negative(TN) Actual Negative(FP+TN) 合计   Predicted Positive(TP+FP) Predicted Negative(FN+TN)  TP+FP+FN+TN 从列联表引入两个新名词。其一是真正类率(true positive rate ,TPR), 计算公式为 TPR=TP / ( TP + FN ),刻画的是分类器所识别出的正实例占所有正实例的比例。另外一个是负正类率(false positive rate, FPR),计算公式为 FPR= FP / (FP + TN), 计算的是分类器错认为正类的负实例占所有负实例的比例。还有一个真负类率(True Negative Rate,TNR),也称为specificity,计算公式为TNR= TN / ( FP + TN ) = 1 − FPR 。 在一个二分类模型中,对于所得到的连续结果,假设已确定一个阀值,比如说 0.6,大于这个值的实例划归为正类,小于这个值则划到负类中。如果减小阀值,减到0.5,固然能识别出更多的正类,也就是提高了识别出的正例占所有正例的比类,即TPR,但同时也将更多的负实例当作了正实例,即提高了FPR。为了形象化这一变化,在此引入ROC。 Receiver Operating Characteristic,翻译为"接受者操作特性曲线",够拗口的。曲线是由两个变量的组合,1-specificity和 Sensitivity. 由于1-specificity=FPR,即负正类率。Sensitivity即是真正类率,True positive rate,反映了正类覆盖程度。这个组合以1-specificity对sensitivity,即是以代价(costs)对收益(benefits)。
个人分类: 授业解惑|3727 次阅读|0 个评论
如何等分椭圆周长
热度 1 yeshangjun 2012-3-7 23:18
今天碰到一个小问题,就是怎么把椭圆的周长N等分。按照常规,先求椭圆的周长4aE(e^2),其中E(x)是第二类完全椭圆积分,没关系,Matlab 刚好有此函数,调用之。然后求出每一份的弧长,也就是需要求解第二类不完全椭圆函数的逆问题,matlab有第一类的,第二类没有,开始抓狂,上网查了很 多资料,还是不知道怎么办。后来查到 dynamic@matlabsky 给出了一种非常巧妙的办法。下面是他的code lambda=0.3; L=2; intfun=@(phi)sqrt(1-lambda*sin(phi).^2); objfun=@(phi)quadl(intfun,0,phi)-L; fsolve(objfun,rand) problem solved!而且他的办法适用于一切存在表达式的曲线等分。 这个问题解决后,马上又碰到第二个问题,如果该曲线没有表达式,只知道一部分曲线点的坐标,但是可以用样条连成光滑的曲线,怎么等分?
3664 次阅读|2 个评论
[转载]残差曲线震荡问题
jiangfan2008 2012-2-2 09:06
一 . 残差波动的主要原因: 1 、高精度格式; 2 、网格太粗; 3 、网格质量差; 4 、流场本身边界复杂,流动复杂; 5 、模型的不恰当使用。 二 . 问:在进行稳态计算时候,开始残差线是一直下降的,可是到后来各种残差线都显示为波形波动,是不是不收敛阿? 答:有些复杂或流动环境恶劣情形下确实很难收敛。计算的精度( 2 阶),网格太疏,网格质量太差,等都会使残差波动。经常遇到,一开始下降,然后出现波动,可以降低松弛系数,我的问题就能收敛,但如果网格质量不好,是很难的。通常,计算非结构网格,如果问题比较复杂,会出现这种情况,建议作网格时多下些功夫。理论上说,残差的震荡是数值迭代在计算域内传递遭遇障碍物反射形成周期震荡导致的结果,与网格亚尺度雷诺数有关。例如,通常压力边界是主要的反射源,换成 OUTFLOW 边界会好些。这主要根据经验判断。所以我说网格和边界条件是主要因素。 三 . 1 、网格问题:比如流场内部存在尖点等突变,导致网格在局部质量存在问题,影响收敛。 2 、可以调整一下 courant number , courant number 实际上是指时间步长和空间步长的相对关系,系统自动减小 courant 数,这种情况一般出现在存在尖锐外形的计算域,当局部的流速过大或者压差过大时出错,把局部的网格加密再试一下。 3 、在 fluent 中,用 courant number 来调节计算的稳定性与收敛性。一般来说,随着 courant number 的从小到大的变化,收敛速度逐渐加快,但是稳定性逐渐降低。所以具体的问题,在计算的过程中,最好是把 courant number 从小开始设置,看看迭代残差的收敛情况,如果收敛速度较慢而且比较稳定的话,可以适当的增加 courant number 的大小,根据自己具体的问题,找出一个比较合适的 courant number ,让收敛速度能够足够的快,而且能够保持它的稳定性。 本人觉得可以重点参考第四个回答。另外,如果出现连续方程残差很高收敛慢的情况,首先应该检查的是网格质量;由于现在大量使用分块网格,这时要看看两相邻块处的网格大小是不是相差较大,也就是看看有没有出现 cell jump 的情况,相邻网格的大小最好不要超过 2 倍的关系,这时出现高连续方程残差的一个主要原因,这需要在划分网格时做好规划。
2602 次阅读|0 个评论
Origin 8 延长拟合曲线的方法(图文改进版)
热度 1 Bearjazz 2012-1-13 09:26
Origin 8 延长拟合曲线的方法(图文改进版) 熊荣川 六盘水师范学院 xiongrongchuan@126.com 1) 选菜单“ Analysis" 2) 选取“ Fitting", "Fitting Linear", "Open Dialog" 为了图文并貌请下载pdf文件观看 Origin 8 延长拟合曲线的方法(图文改进版).pdf
个人分类: 我的研究|27133 次阅读|1 个评论
[转载]MATLAB曲线绘制
linpandr 2012-1-13 00:23
MATLAB曲线绘制 一。 二维数据曲线图 1.1 绘制 单根二维曲线 plot 函数的基本 调用 格式为: plot(x,y) 其中x和y为长度相同的向量,分别用于存储x 坐标 和y坐标数据。 例1-1 在0≤x≤2p区间内,绘制曲线 y=2e-0.5xcos(4πx) 程序 如下: x=0:pi/100:2*pi; y=2*exp(-0.5*x).*cos(4*pi*x); plot(x,y) 例1-2 绘制曲线。 程序如下: t=0:0.1:2*pi; x=t.*sin(3*t); y=t.*sin(t).*sin(t); plot(x,y); plot函数最简单的调用格式是只包含一个输入 参数 : plot(x) 在这种情况下,当x是实向量时,以该向量元素的下标为横坐标,元素值为纵坐标画出一条连续曲线,这实际上是绘制折线图。 1.2 绘制多根二维曲线 1.plot函数的输入参数是 矩阵 形式 (1) 当x是向量,y是有一维与x同维的矩阵时,则绘制出多根不同 颜色 的曲线。曲线条数等于y矩阵的另一维数,x被作为这些曲线共同的横坐标。 (2) 当x,y是同维矩阵时,则以x,y对应列元素为横、纵坐标分别绘制曲线,曲线条数等于矩阵的列数。 (3) 对只包含一个输入参数的plot函数,当输入参数是实矩阵时,则按列绘制每列元素值相对其下标的曲线,曲线条数等于输入参数矩阵的列数。 当输入参数是复数矩阵时,则按列分别以元素实部和虚部为横、纵坐标绘制多条曲线。 2.含多个输入参数的plot函数 调用格式为: plot(x1,y1,x2,y2,…,xn,yn) (1) 当输入参数都为向量时,x1和y1,x2和y2,…,xn和yn分别组成一组向量对,每一组向量对的长度可以不同。每一向量对可以绘制出一条曲线,这样可以在同一坐标内绘制出多条曲线。 (2) 当输入参数有矩阵形式时,配对的x,y按对应列元素为横、纵坐标分别绘制曲线,曲线条数等于矩阵的列数。 例1-3 分析下列程序绘制的曲线。 x1=linspace(0,2*pi,100); x2=linspace(0,3*pi,100); x3=linspace(0,4*pi,100); y1=sin(x1); y2=1+sin(x2); y3=2+sin(x3); x= '; y= '; plot(x,y,x1,y1-1) 3.具有两个纵坐标标度的图形 在MATLAB中,如果需要绘制出具有不同纵坐标标度的两个图形,可以使用plotyy绘图函数。调用格式为: plotyy(x1,y1,x2,y2) 其中x1,y1对应一条曲线,x2,y2对应另一条曲线。横坐标的标度相同,纵坐标有两个,左纵坐标用于x1,y1数据对,右纵坐标用于x2,y2数据对。 例1-4 用不同标度在同一坐标内绘制曲线y1=0.2e-0.5xcos(4πx) 和y2=2e-0.5xcos(πx)。 程序如下: x=0:pi/100:2*pi; y1=0.2*exp(-0.5*x).*cos(4*pi*x); y2=2*exp(-0.5*x).*cos(pi*x); plotyy(x,y1,x,y2); 4.图形保持 hold on/off 命令 控制 是保持原有图形还是刷新原有图形,不带参数的hold命令在两种状态之间进行切换。 例1-5 采用图形保持,在同一坐标内绘制曲线y1=0.2e-0.5xcos(4πx) 和y2=2e-0.5xcos(πx)。 程序如下: x=0:pi/100:2*pi; y1=0.2*exp(-0.5*x).*cos(4*pi*x); plot(x,y1) hold on y2=2*exp(-0.5*x).*cos(pi*x); plot(x,y2); hold off 1.3 设置曲线样式 MATLAB提供了一些绘图选项,用于确定所绘曲线的线型、颜色和数据点标记符号,它们可以组合使用。例如,“b-.”表示蓝色点划线,“y:d”表示黄色虚线并用菱形符标记数据点。当选项省略时,MATLAB规定,线型一律用实线,颜色将根据曲线的先后顺序依次。 要设置曲线样式可以在plot函数中加绘图选项,其调用格式为: plot(x1,y1,选项1,x2,y2,选项2,…,xn,yn,选项n) 例1-6 在同一坐标内,分别用不同线型和颜色绘制曲线y1=0.2e-0.5xcos(4πx) 和y2=2e-0.5xcos(πx),标记两曲线交叉点。 程序如下: x=linspace(0,2*pi,1000); y1=0.2*exp(-0.5*x).*cos(4*pi*x); y2=2*exp(-0.5*x).*cos(pi*x); k=find(abs(y1-y2)1e-2); %查找y1与y2相等点(近似相等)的下标 x1=x(k); %取y1与y2相等点的x坐标 y3=0.2*exp(-0.5*x1).*cos(4*pi*x1); %求y1与y2值相等点的y坐标 plot(x,y1,x,y2,'k:',x1,y3,'bp'); 1.4 图形标注与坐标控制 1.图形标注 有关图形标注函数的调用格式为: title(图形名称) xlabel(x轴说明) ylabel(y轴说明) text (x,y,图形说明) legend(图例1,图例2,…) 函数中的说明文字,除使用标准的ASCII字符外,还可使用LaTeX格式的控制字符,这样就可以在图形上添加希腊字母、数学符号及公式等内容。例如,text(0.3,0.5,‘sin({/omega}t+{/beta})’)将得到标注效果sin(ωt+β)。 例1-7 在0≤x≤2p区间内,绘制曲线y1=2e-0.5x和y2=cos(4πx),并给图形添加图形标注。 程序如下: x=0:pi/100:2*pi; y1=2*exp(-0.5*x); y2=cos(4*pi*x); plot(x,y1,x,y2) title('x from 0 to 2{/pi}'); %加图形标题 xlabel('Variable X'); %加X轴说明 ylabel('Variable Y'); %加Y轴说明 text(0.8,1.5,'曲线y1=2e^{-0.5x}'); %在指定位置添加图形说明 text(2.5,1.1,'曲线y2=cos(4{/pi}x)'); legend(‘y1’,‘ y2’) %加图例 2.坐标控制 axi s函数 的调用格式为: axis( ) axis函数功能丰富,常用的格式还有: axis equal:纵、横坐标轴采用等长刻度。 axis square:产生正方形坐标系(缺省为矩形)。 axis auto:使用缺省设置。 axis off:取消坐标轴。 axis on: 显示 坐标轴。 给坐标加网格线用grid命令来控制。grid on/off命令控制是画还是不画网格线,不带参数的grid命令在两种状态之间进行切换。 给坐标加边框用box命令来控制。box on/off命令控制是加还是不加边框线,不带参数的box命令在两种状态之间进行切换。 例1-8 在同一坐标中,可以绘制3个同心圆,并加坐标控制。 程序如下: t=0:0.01:2*pi; x=exp(i*t); y= '; plot(y) grid on; %加网格线 box on; %加坐标边框 axis equal %坐标轴采用等刻度 1.5 图形的可视化编辑 MATLAB 6.5版本在图形窗口中提供了可视化的图形编辑工具,利用图形窗口菜单栏或工具栏中的有关命令可以完成对窗口中各种图形对象的编辑处理。 在图形窗口上有一个菜单栏和工具栏。菜单栏包含File、Edit、View、Insert、Tools、Window和Help共7个菜单项,工具栏包含11个命令按钮。 1.6 对函数自适应采样的绘图函数 fplot函数的调用格式为: fplot(fname,lims,tol,选项) 其中fname为函数名,以字符串形式出现,lims为x,y的取值范围,tol为相对允许误差,其 系统 默认值为2e-3。选项定义与plot函数相同。 例1-9 用fplot函数绘制f(x)=cos(tan(πx))的曲线。 命令如下: fplot('cos(tan(pi*x))', ,1e-4) 1.7 图形窗口的分割 subplot函数的调用格式为: subplot(m,n,p) 该函数将当前图形窗口分成m×n个绘图区,即每行n个,共m行,区号按行优先编号,且选定第p个区为当前活动区。在每一个绘图区允许以不同的坐标系单独绘制图形。 例5-10 在图形窗口中,以子图形式同时绘制多根曲线。 二。 其他二维图形 2.1 其他坐标系下的二维数据曲线图 1.对数坐标图形 MATLAB提供了绘制对数和半对数坐标曲线的函数,调用格式为: semilogx(x1,y1,选项1,x2,y2,选项2,…) semilogy(x1,y1,选项1,x2,y2,选项2,…) loglog(x1,y1,选项1,x2,y2,选项2,…) 2.极坐标图 polar函数用来绘制极坐标图,其调用格式为: polar(theta,rho,选项) 其中theta为极坐标极角,rho为极坐标矢径,选项的内容与plot函数相似。 例1-12 绘制r=sin(t)cos(t)的极坐标图,并标记数据点。 程序如下: t=0:pi/50:2*pi; r=sin(t).*cos(t); polar(t,r,'-*'); 2.2 二维统计分析图 在MATLAB中,二维统计分析图形很多,常见的有条形图、阶梯图、杆图和填充图等,所采用的函数分别是: bar(x,y,选项) stairs(x,y,选项) stem(x,y,选项) fill(x1,y1,选项1,x2,y2,选项2,…) 例1-13 分别以条形图、阶梯图、杆图和填充图形式绘制曲线y=2sin(x)。 程序如下: x=0:pi/10:2*pi; y=2*sin(x); subplot(2,2,1);bar(x,y,'g'); title('bar(x,y,''g'')');axis( ); subplot(2,2,2);stairs(x,y,'b'); title('stairs(x,y,''b'')');axis( ); subplot(2,2,3);stem(x,y,'k'); title('stem(x,y,''k'')');axis( ); subplot(2,2,4);fill(x,y,'y'); title('fill(x,y,''y'')');axis( ); MATLAB提供的统计分析绘图函数还有很多,例如,用来表示各元素占总和的百分比的饼图、复数的相量图等等。 例1-14 绘制图形: (1) 某企业全年各季度的产值(单位:万元)分别为:2347,1827,2043,3025,试用饼图作统计分析。 (2) 绘制复数的相量图:7+2.9i、2-3i和-1.5-6i。 程序如下: subplot(1,2,1); pie( ); title('饼图'); legend('一季度','二季度','三季度','四季度'); subplot(1,2,2); compass( ); title('相量图'); 三。 隐函数绘图 MATLAB提供了一个ezplot函数绘制隐函数图形,下面介绍其用法。 (1) 对于函数f = f(x),ezplot函数的调用格式为: ezplot(f):在默认区间-2πx2π绘制f = f(x)的图形。 ezplot(f, ):在区间axb绘制f = f(x)的图形。 (2) 对于隐函数f = f(x,y),ezplot函数的调用格式为: ezplot(f):在默认区间-2πx2π和-2πy2π绘制f(x,y) = 0的图形。 ezplot(f, ):在区间xminxxmax和yminyymax绘制f(x,y) = 0的图形。 ezplot(f, ):在区间axb和ay b绘制f(x,y) = 0的图形。 (3) 对于参数 方程 x = x(t)和y = y(t),ezplot函数的调用格式为: ezplot(x,y):在默认区间0t2π绘制x=x(t)和y=y(t)的图形。 ezplot(x,y, ):在区间tmin t tmax绘制x=x(t)和y=y(t)的图形。 例1-15 隐函数绘图 应用 举例。 程序如下: subplot(2,2,1); ezplot('x^2+y^2-9');axis equal subplot(2,2,2); ezplot('x^3+y^3-5*x*y+1/5') subplot(2,2,3); ezplot('cos(tan(pi*x))', ) subplot(2,2,4); ezplot('8*cos(t)','4*sqrt(2)*sin(t)', ) 四。三维图形 4.1 三维曲线 plot3函数与plot函数用法十分相似,其调用格式为: plot3(x1,y1,z1,选项1,x2,y2,z2,选项2,…,xn,yn,zn,选项n) 其中每一组x,y,z组成一组曲线的坐标参数,选项的定义和plot函数相同。当x,y,z是同维向量时,则x,y,z 对应元素构成一条三维曲线。当x,y,z是同维矩阵时,则以x,y,z对应列元素绘制三维曲线,曲线条数等于矩阵列数。 例1-16 绘制三维曲线。 程序如下: t=0:pi/100:20*pi; x=sin(t); y=cos(t); z=t.*sin(t).*cos(t); plot3(x,y,z); title('Line in 3-D Space'); xlabel('X');ylabel('Y');zlabel('Z'); grid on; 4.2 三维曲面 1.产生三维数据 在MATLAB中,利用meshgrid函数产生平面区域内的网格坐标矩阵。其格式为: x=a:d1:b; y=c:d2:d; =meshgrid(x,y); 语句执行后,矩阵X的每一行都是向量x,行数等于向量y的元素的个数,矩阵Y的每一列都是向量y,列数等于向量x的元素的个数。 2.绘制三维曲面的函数 surf函数和mesh函数的调用格式为: mesh(x,y,z,c) surf(x,y,z,c) 一般情况下,x,y,z是维数相同的矩阵。x,y是网格坐标矩阵,z是网格点上的高度矩阵,c用于指定在不同高度下的颜色范围。 例1-17 绘制三维曲面图z=sin(x+sin(y))-x/10。 程序如下: =meshgrid(0:0.25:4*pi); z=sin(x+sin(y))-x/10; mesh(x,y,z); axis( ); 此外,还有带等高线的三维网格曲面函数meshc和带底座的三维网格曲面函数meshz。其用法与mesh类似,不同的是meshc还在xy平面上绘制曲面在z轴方向的等高线,meshz还在xy平面上绘制曲面的底座。 例1-18 在xy平面内选择区域 × ,绘制4种三维曲面图。 程序如下: =meshgrid(-8:0.5:8); z=sin(sqrt(x.^2+y.^2))./sqrt(x.^2+y.^2+eps); subplot(2,2,1); mesh(x,y,z); title('mesh(x,y,z)') subplot(2,2,2); meshc(x,y,z); title('meshc(x,y,z)') subplot(2,2,3); meshz(x,y,z) title('meshz(x,y,z)') subplot(2,2,4); surf(x,y,z); title('surf(x,y,z)') 3.标准三维曲面 sphere函数的调用格式为: =sphere(n) cylinder函数的调用格式为: = cylinder(R,n) MATLAB还有一个peaks 函数,称为多峰函数,常用于三维曲面的演示。 !-- -- !-- -- 例1-19 绘制标准三维曲面图形。 程序如下: t=0:pi/20:2*pi; = cylinder(2+sin(t),30); subplot(2,2,1); surf(x,y,z); subplot(2,2,2); =sphere; surf(x,y,z); subplot(2,1,2); =peaks(30); surf(x,y,z); !-- -- !-- -- 4.3 其他三维图形 在介绍二维图形时,曾提到条形图、杆图、饼图和填充图等特殊图形,它们还可以以三维形式出现,使用的函数分别是bar3、stem3、pie3 和fill3。 bar3函数绘制三维条形图,常用格式为: bar3(y) bar3(x,y) stem3函数绘制离散序列数据的三维杆图,常用格式为: stem3(z) stem3(x,y,z) pie3函数绘制三维饼图,常用格式为: pie3(x) fill3函数等效于三维函数fill,可在三维空间内绘制出填充过的多边形,常用格式为: fill3(x,y,z,c) !-- -- !-- -- 例1-20 绘制三维图形: (1) 绘制魔方阵的三维条形图。 (2) 以三维杆图形式绘制曲线y=2sin(x)。 (3) 已知x= ,绘制饼图。 (4) 用随机的顶点坐标值画出五个黄色三角形。 程序如下: subplot(2,2,1); bar3(magic(4)) subplot(2,2,2); y=2*sin(0:pi/10:2*pi); stem3(y); subplot(2,2,3); pie3( ); subplot(2,2,4); fill3(rand(3,5),rand(3,5),rand(3,5), 'y' ) 例1-21 绘制多峰函数的瀑布图和等高线图。 程序如下: subplot(1,2,1); =peaks(30); waterfall(X,Y,Z) xlabel('X-axis'),ylabel('Y-axis'),zlabel('Z-axis'); subplot(1,2,2); contour3(X,Y,Z,12,'k'); %其中12代表高度的等级数 xlabel('X-axis'),ylabel('Y-axis'),zlabel('Z-axis'); !-- -- 五。 图形修饰处理 5.1 视点处理 MATLAB提供了设置视点的函数view,其调用格式为: view(az,el) 其中az为方位角,el为仰角,它们均以度为单位。系统缺省的视点定义为方位角-37.5°,仰角30°。 例5-22 从不同视点观察三维曲线。 5.2 色彩处理 1.颜色的向量表示 MATLAB除用字符表示颜色外,还可以用含有3个元素的向量表示颜色。向量元素在 范围取值,3个元素分别表示红、绿、蓝3种颜色的相对亮度,称为RGB三元组。 !-- -- !-- -- 2.色图 色图(Color map)是MATLAB系统引入的概念。在MATLAB中,每个图形窗口只能有一个色图。色图是m×3 的数值矩阵,它的每一行是RGB三元组。色图矩阵可以人为地生成,也可以调用MATLAB提供的函数来定义色图矩阵。 3.三维表面图形的着色 三维表面图实际上就是在网格图的每一个网格片上涂上颜色。surf函数用缺省的着色方式对网格片着色。除此之外,还可以用shading命令来改变着色方式。 shading faceted命令将每个网格片用其高度对应的颜色进行着色,但网格线仍保留着,其颜色是黑色。这是系统的缺省着色方式。 shading flat命令将每个网格片用同一个颜色进行着色,且网格线也用相应的颜色,从而使得图形表面显得更加光滑。 shading interp命令在网格片内采用颜色插值处理,得出的表面图显得最光滑。 例1-23 3种图形着色方式的效果展示。 程序如下: =sphere(20); colormap(copper); subplot(1,3,1); surf(x,y,z); axis equal subplot(1,3,2); surf(x,y,z);shading flat; axis equal subplot(1,3,3); surf(x,y,z);shading interp; axis equal 5.3 光照处理 MATLAB提供了灯光设置的函数,其调用格式为: light('Color',选项1,'Style',选项2,'Position',选项3) !-- -- !-- -- 例5-24 光照处理后的球面。 程序如下: =sphere(20); subplot(1,2,1); surf(x,y,z);axis equal; light('Posi', ); shading interp; hold on; plot3(0,1,1,'p');text(0,1,1,' light'); subplot(1,2,2); surf(x,y,z);axis equal; light('Posi', ); shading interp; hold on; plot3(1,0,1,'p');text(1,0,1,' light'); 5.4 图形的裁剪处理 例5-25 绘制三维曲面图,并进行插值着色处理,裁掉图中x和y都小于0部分。 程序如下: =meshgrid(-5:0.1:5); z=cos(x).*cos(y).*exp(-sqrt(x.^2+y.^2)/4); surf(x,y,z);shading interp; pause %程序暂停 i=find(x=0y=0); z1=z;z1(i)=NaN; surf(x,y,z1);shading interp; 为了展示裁剪效果,第一个曲面绘制完成后暂停,然后显示裁剪后的曲面。 六。 图像处理 与动画制作 6.1 图像处理 1.imread和imwrite函数 imread和imwrite函数分别用于将图像 文件 读入MATLAB工作空间,以及将图像数据和色图数据一起写入一定格式的图像文件。MATLAB支持多种图像文件格式,如.bmp、.jpg、.jpeg、.tif等。 2.image和imagesc函数 这两个函数用于图像显示。为了保证图像的显示效果,一般还应使用colormap函数设置图像色图。 例1-26 有一图像文件flower.jpg,在图形窗口显示该图像。 程序如下: =imread('flower.jpg'); %读取图像的数据阵和色图阵 image(x);colormap(cmap); axis image off %保持宽高比并取消坐标轴 6.2 动画制作 MATLAB提供getframe、moviein和movie函数进行动画制作。 1.getframe函数 getframe函数可截取一幅画面信息(称为动画中的一帧),一幅画面信息形成一个很大的列向量。显然, 保存 n幅图面就需一个大矩阵。 2.moviein函数 moviein(n)函数用来建立一个足够大的n列矩阵。该矩阵用来保存n幅画面的数据,以备播放。之所以要事先建立一个大矩阵,是为了提高程序 运行 速度。 3.movie函数 movie(m,n)函数播放由矩阵m所定义的画面n次,缺省时播放一次。 例1-27 绘制了peaks函数曲面并且将它绕z轴旋转。 程序如下 =peaks(30); surf(X,Y,Z) axis( ) axis off; shading interp; colormap(hot); m=moviein(20); %建立一个20列大矩阵 for i=1:20 view(-37.5+24*(i-1),30) %改变视点 m(:,i)=getframe; %将图形保存到m矩阵 end movie(m,2); %播放画面2次
7279 次阅读|0 个评论
直角坐标系中量子化与曲线坐标系中量子化的差别1
热度 1 chenfap 2012-1-9 11:09
直角坐标系中量子化与曲线坐标系中量子化的差别1
直角坐标系中量子化与曲线坐标系中量子化的差别1 (物理学上的时空与物质 6 5 ) 1. 若 时-空或空间是平直的 牛顿力学的空间、狭义相对论的时 - 空和空间都是均匀(即平直)的 ,因 之,牛顿力学的空间用 3 维迪卡尔直角坐标系来描述最为简便;狭义相对论的时 - 空和空间分别用 4 维和 3 维直角坐标系来描述也最为简便。本博在以前曾讲过, 牛顿力学的空间也可以用 3 维曲线坐标系来描述 ,狭义相对论的时 - 空和空间 也可以分别用 4 维和 3 维曲线坐标系来描述 。这样就要出现用曲线坐标系描述 和用直角坐标系描述的关系问题以及这两种描述的差别、优劣等问题。本文不 打算详细讨论这些问题,只主要着重讨论在 直角坐标系中量子化与曲线坐标系 中量子化的某些差别问题。 为简单起见,我们只限于讨论正则量子化 。在正则量子化中,正则 坐标
个人分类: 未分类|4381 次阅读|2 个评论
[转载]正确率-召回率曲线(precision versus recall curve)
msh1216 2011-12-25 17:15
正确率-召回率曲线(precision versus recall curve) „检索结果以排序方式排列,用户不可能马上看到全部文档,因此,在用户观察的过程中,正确率和召回率在不断变化(vary) 。 „可以求出在召回率分别为0%,10%,20%,30%,…, 90%,100% 上对应的正确率,然后描出图像某个查询q 的标准答案集合为:Rq={d3,d5,d9,d25,d39,d44,d56,d71,d89,d123} „ 某个IR系统对q 的检索结果如下: 1. d123 R=0.1,P=1 6. d9 R=0.3,P=0.5 11. d38 2. d847. d511 12. d48 3. d56 R=0.2,P=0.678. d129 13. d250 4. d6 9. d187 14. d113 5. d8 10. d25 R=0.4,P=0.4 15. d3 R=0.5,P=0.33 对于前面的例子,假设Rq={d3,d56,d129} 3. d56 R=0.33,P=0.33; 8. d129 R=0.66, P=0.25; 15. d3 R=1,P=0.2 不存在10%, 20%,…,90%的召回率点,而只存在33.3%, 66.7%, 100%三个召回率点在这种情况下,需要利用存在的召回率点对不存在的召回率点进行插值(interpolate)对于t% ,如果不存在该召回率点,则定义t%为从t%到(t+10)% 中最大的正确率值。对于上例,0%,10%,20%,30%上正确率为0.33,40%~60%对应0.25,70% 以上对应0.2
6518 次阅读|0 个评论
[转载]Matlab plot
linpandr 2011-12-13 21:22
Matlab plot 二维曲线绘图 语法 plot(Y) plot(X1,Y1,...) plot(X1,Y1,LineSpec,...) plot(...,'PropertyName',PropertyValue,...) plot(axes_handle,...) h = plot(...) hlines = plot('v6',...) 描述 plot(Y)如果Y是m×n的数组,以1:m为X横坐标,Y中的每一列元素为Y坐标,绘制n条曲线;如果Y是n×1或者1×n的向量,则以1:n为横坐标,Y为坐标表绘制1条曲线;如果Y是复数,则plot(Y)等效于plot(real(Y),imag(Y));其它使用情况下,忽略坐标数据中的虚部。 plot(X1,Y1,...)如果X和Y都是数组,按列取坐标数据绘图,此时它们必须具有相同的尺寸;如果X和Y其中一个是向量另一个为数组,X和Y中尺寸相等的方向对应绘制多条曲线;如果X和Y其中一个是标量另一个为向量,那么将绘制垂直X或者Y轴离散的点。 X Y 备注 m×n m×n 按列取坐标数据绘制n条曲线 X和Y必须具有相同的尺寸 1×n或n×1 m×n或n×m 自动匹配尺寸相同方向绘制m条曲线 任意四种组合,效果一样 m×n或n×m 1×n或n×1 同上 同上 1×1 1×n或n×1 绘制垂直X轴离散点 Y可以任意向量 1×n或n×1 1×1 绘制垂直Y轴离散点 X可以任意向量 plot(X1,Y1,LineSpec,...)通过参数LineSpec指定曲线的曲线属性,它包括线型、标记符和颜色。plot函数支持同时绘制任意组图形 plot(X1,Y1,LineSpec1,X2,Y2,LineSpec2,...) 此时完全等效于 plot(X1,Y1,LineSpec1,...) hlod all plot(X2,Y2,LineSpec2,...) MATLAB中提供的线型属性有: 线型 说明 标记符 说明 颜色 说明 - 实线(默认) + 加号符 r 红色 -- 双划线 o 空心圆 g 绿色 : 虚线 * 星号 b 蓝色 :. 点划线 . 实心圆 c 青绿色 x 叉号符 m 洋红色 s 正方形 y 黄色 d 菱形 k 黑色 ^ 上三角形 w 白色 v 下三角形 右三角形 左三角形 p 五角星 h 六边形 需要说明的是,LineSpec中设置曲线线型、标识符和颜色三项属性时,控制符的顺序不受限制并可以省略或者部分省略。也就是说'r-.*'、'-.r*'、'*-.r'等形式是等效的,都表示使用红色点划线连接各个节点,各节点使用“*”标识。 plot(...,'PropertyName',PropertyValue,...)设置由plot创建的所有曲线句柄对象的属性,Line对象属性和属性值参见附录,具体设置参考下面的实例,当然可以使用set/get进行设置。 plot(axes_handle,...)指定坐标系,也就是在axes_handle坐标系中绘图,在没有指定时默认为gca。 h = plot(...)返回由plot创建的所有曲线句柄对象的句柄。每条曲线对应一个句柄,如果有n条曲线,则h为n×1的数组。 注意 在同时绘制多条曲线时,如果没有指定曲线属性,plot按顺序循环使用当前坐标系中ColorOrder和LineStyleOrder两个属性。 默认情况,MATLAB在每次调用plot函数时将ColorOrder和LineStyleOrder自动重置为DefaultAxesColorOrder和DefaultAxesLineStyleOrde r。Default**属性我们可以自定义,有效期至MATLAB关闭,Matlab下次启动时将Default**属性重置为厂家设置(Factory) set(0,'DefaultAxesColorOrder',’r|g|b|k’,... 'DefaultAxesLineStyleOrder','-|-.|--|:') 使用hold all命令可以阻止调用plot函数时自动重置ColorOrder和LineStyleOrder属性,而是循环使用。注意hold on只是使多次绘制的图形叠加(相当于NextPlot),但不能阻止属性重置。 另外我们可以通过下面四个属性设置标识符的颜色和大小 LineWidth——指定线宽 MarkerEdgeColor——指定标识符的边缘颜色 MarkerFaceColor——指定标识符填充颜色 MarkerSize——指定标识符的大小 注意上面四个属性是针对当前坐标系中所有曲线的 实例 % by dynamic % see also http://www.matlabsky.com % 2009.8.20 % X=1:10; % 两个都是数组,必须具有相同的尺寸 X1= ';%10×3 Y1=rand(10,3)+1;%10×3 % 其中一个为向量,另一个为数组,自动匹配尺寸相等方向 X2=1:0.1:10;%1×91 Y2= ';%91×2 % 其中一个是标量,另一为矢量,绘制垂直坐标轴的离散点 X3=1:10; Y3=-0.5; fh=figure('numbertitle','off','name','PLOT Usability Demo');%创建figure对象 ah=axes;%创建axes对象 h=plot(...%返回所有曲线句柄 ah,...%指定坐标系,可以省略,此时默认gca X1,Y1,...%坐标数据 '-.^',...%曲线属性,可以省略或部分省略,此时自动选择 X2,Y2,... 'm-',... X3,Y3,... 'o',...%注意此组数据设置线型和颜色无效,因为默认绘制离散点 'LineWidth',2,...%线宽 'MarkerEdgeColor','k',...%标识符边缘颜色 'MarkerFaceColor','r',...%标识符填充颜色 'MarkerSize',8)%标识符大小 set (gca,'XTick',-pi:pi/2:pi) set (gca,' XTickLabel ',{'-pi','-pi/2','0','pi/2','pi'})
2880 次阅读|0 个评论
[转载]MATLAB特殊图形和高维可视化
linpandr 2011-12-13 18:07
7.4 特殊图形和高维可视化 7.4.1 特殊图形指令例示 7.4.1.1 面域图area 【 * 例 7.4.1 .1-1 】面域图指令 area 。该指令的特点是:在图上绘制多条曲线时,每条曲线(除第一条外)都是把“前”条曲线作基线,再取值绘制而成。因此,该指令所画的图形,能醒目地反映各因素对最终结果的贡献份额。 注意:( 1 ) area 的第一输入宗量是单调变化的自变量。第二输入宗量是“各因素”的函数值矩阵,且每个“因素”的数据取列向量形式排放。第三输入宗量是绘图的基准线值,只能取标量。当基准值为 0 (即以 x 轴为基准线)时,第三输入宗量可以缺省。( 2 )本例第 4 条指令书写格式 x' , Y' , 强调沿列方向画各条曲线的事实。 clf;x=-2:2 % 注意:自变量要单调变化 Y= % 各因素的相对贡献份额 Cum_Sum=cumsum(Y) % 各曲线在图上的绝对坐标 area(x',Y',0) %4 legend(' 因素 A',' 因素 B',' 因素 C'),grid on,colormap(spring) x = -2 -1 0 1 2 Y = 3 5 2 4 1 3 4 5 2 1 5 4 3 2 5 Cum_Sum = 3 5 2 4 1 6 9 7 6 2 11 13 10 8 7 图 7.4.1 .1-1 面域图表现各分量的贡献 7.4.1.2 各种直方图bar, barh, bar3, bar3h 【 * 例 7.4.1 .2-1 】二维直方图有两种图型:垂直直方图和水平直方图。而每种图型又有两种表现模式:累计式:分组式。本例选其两种加以表现。 x=-2:2; % 注意:自变量要单调变化 Y= ; % 各因素的相对贡献份额 subplot(1,2,1),bar(x',Y','stacked') % “累计式”直方图 xlabel('x'),ylabel('/Sigma y'),colormap(cool)% 控制直方图的用色 legend(' 因素 A',' 因素 B',' 因素 C') subplot(1,2,2),barh(x',Y','grouped') % “分组式”水平直方图 xlabel('y'),ylabel('x') 图 7.4.1 .2-1 二维直方图 clf;x=-2:2; % 注意:自变量要单调变化 Y= ; % 各因素的相对贡献份额 subplot(1,2,1),bar3(x',Y',1) % “队列式”直方图 xlabel(' 因素 ABC'),ylabel('x'),zlabel('y') colormap(summer) % 控制直方图的用色 subplot(1,2,2),bar3h(x',Y','grouped') % “分组式”水平直方图 ylabel('y'),zlabel('x') 图 7.4.1 .2-2 三维直方图 7.4.1.3 饼图pie, pie3 【 * 例 7.4.1 .3-1 】饼图指令 pie , pie3 用来表示各元素占总和的百分数。该指令第二输入宗量为与第一宗量同长的 0-1 向量, 1 使对应扇块突出。 a= ; subplot(1,2,1),pie(a, ),legend({'1','2','3','4','5'}) subplot(1,2,2),pie3(a,a==min(a)),colormap(cool) 图 7.4.1 .3-1 饼形统计图 7.4.1.4 填色图fill,fill3 【 * 例 7.4.1 .4-1 】读者试验本例时,注意三点: MATLAB 画任意多边形的一种方法;保证绘图数据首尾重合,使勾画多边形封闭;使用图柄对图形的属性进行精细设置。 clf;n=10; % 多边形的边数 dt=2*pi/n;t=0:dt:2*pi t= ; %fill 指令要求数据向量的首位重合,使图形封闭。 x=sin(t);y=cos(t); fill(x,y,'c');axis off % 画填色多边形,隐去坐标轴。 ht=text(0,0,'/fontname{ 隶书 }/fontsize{32} 十边形 ');% 文字注释,且得图柄。 set(ht,'Color','k','HorizontalAlignment','Center') % 依靠图柄设置属性。 图 7.4.1 .4-1 由 fiil 产生的填色多边形 【例 7.4.1 .4-2 】三维填色指令 fill3 演示。注意:( 1 ) X,Y,Z 的相应列元素构成一个三维封闭多边形。本例有 4 列,因此有 4 个多边形。图 7.4.1.4-2 中的“ 1 , 2 , 3 , 4 ” 号三角形分别由 X,Y,Z 的第 1 , 2 , 3 , 4 列生成。( 2 )为使多边形封闭,每列的首尾元素应该重合。若不重合,则将默认把最后一点与第一点相连,强行使多边形封闭。( 3 )该指令的第 4 输入宗量可取定色单字符(如 'r' , 'g' 等),也可取与 X 同维的数值矩阵。( 4 )所填色彩受 C 和色图的双重响应。( 5 )本例图中三角形的编号是通过“图形窗”编辑而生成的。 X= ; Y= ; Z= ;C= ; fill3(X,Y,Z,C),view( ),colormap cool xlabel('x'),ylabel('y'),box on;grid on 图 7.4.1 .4-2 三维填色 7.4.1.5 射线图compass和羽毛图feather 【 * 例 7.4.1 .5-1 】 compass 和 feather 指令的区别。 t=-pi/2:pi/12:pi/2; % 在 区间,每 取一点。 r=ones(size(t)); % 单位半径 =pol2cart(t,r); % 极坐标转化为直角坐标 subplot(1,2,1),compass(x,y),title('Compass') subplot(1,2,2),feather(x,y),title('Feather') 图 7.4.1 .5-1 compass 和 feather 指令的区别 7.4.1.6 Voronoi图和三角剖分 【 * 例 7.4.1 .6-1 】用 Voronoi 多边形勾画每个点的最近邻范围。 Voronoi 多边形在计算几何、模式识别中有重要应用。从本例图 7.4.1.6-1 中,可以看到,三角形顶点所在多边形的三条公共边是剖分三角形边的垂直平分线。 clf;rand('state',111) n=30;A=rand(n,1)-0.5;B=rand(n,1)-0.5; % 产生 30 个随机点 T=delaunay(A,B); % 求相邻三点组 T= ; % 为使三点剖分三角形封闭而采取的措施 voronoi(A,B) % 画 Voronoi 图 hold on;axis square fill(A(T(10, :)),B(T(10,:)),'y'); % 画一个剖分三角形 voronoi(A,B) % 重画 Voronoi 图,避免线被覆盖。 图 7.4.1 .6-1 Voronoi 多边形和 Delaubay 三角剖分 7.4.1.7 彩带图ribbon 【 * 例 7.4.1 .7-1 】用彩带绘图指令 ribbon ,绘制归化二阶系统 在不同 值时的阶跃响应,如图 7.4.1.7-1 所示。对于本例程序,有以下几点值得注意:( 1 )程序中使用了 Control Toolbox 中的两个指令 tf 和 step 。这 tf 是一个( MATLAB5.x 版起用的)“对象”。( 2 )本例构作的 S 是一个单输入 8 输出系统,作用于该 S 的 step 指令也将在一次调用中产生 8 个子系统的阶跃响应。( 3 )在下段程序运行后,有兴趣的读者可显示 S ,以观察系统是如何描写的。( 4 )本例为了得到较好的表现效果,采用了视角、明暗、色图、光照控制。( 5 )为使程序有一定通用性,图例采用元胞数组生成。( 6 )本例产生的图 7.4.1.7-1 中,除“ ”外,所有标识都是由下段指令产生的。( 7 )“ ”中的斜向箭头无法由指令生成,而是直接通过“图形窗”编辑实现的( MATLAB5.3 版起用)。( 8 )本例程序有通用性。只要修改第 2 条指令对阻尼系数的设定,就可获得响应的彩带图形。 clear,clf zeta2= ; %2 n=length(zeta2); for k=1:n;Num{k,1}=1;Den{k,1}= ;end S=tf(Num,Den); % 产生单输入多输出系统 t=(0:0.4:30)'; % 时间采样点 =step(S,t); % 单输入多输出系统的响应 tt=t*ones(size(zeta2)); % 为画彩带图,生成与函数值 Y 维数相同的时间矩阵。 ribbon(tt,Y,0.4) % 画彩带图 % 至此彩带图已经生成。以下指令都是为了使图形效果更好、标识更清楚而用。 view( ),shading interp,colormap(jet)% 设置视角、明暗、色图 light,lighting phong,box on % 设置光源、照射模式、坐标框 for k=1:n;str_lgd{k,1}=num2str(zeta2(k));end,legend(str_lgd)% 图例设置 str1='/itG = (s^{2} + 2/zetas + 1)^{-1}'; str2='/fontsize{16}/fontname{ 隶书 } 取不同 '; str3='{/fontsize{10}/it/zeta}'; str4='/fontsize{16}/fontname{ 隶书 } 时的阶跃响应 '; title( ),zlabel('/ity(/zeta,t) /rightarrow') 图 7.4.1 .7-1 二阶系统在不同阻尼系数时的响应 7.4.1.8 离散杆图stem , stem3 【 * 例 7.4.1 .8-1 】本例表现一个离散方波的快速 Fourier 变换的幅频。本例左图用极坐标指令 polar 绘出,右图用三维离散杆图指令 stem3 绘出。 MATLAB 的 polar 指令是建筑在 plot 基础上的。指令执行后,出现的极坐标轴及分度标识也是由 plot 以一种“固定”模式产生的。因此,极坐标轴的控制很不灵活,它只能以比较简单的方式表达函数。如对于本例左图,那图形小、线条细、文字太密的缺陷,就较难克服。相比而言,先借助极坐标和直角坐标转换,然后再通过直角坐标图形指令加以表现,往往更显灵活、方便。如本例的右图。 th = (0:127)/128*2*pi; % 角度采样点 rho=ones(size(th)); % 单位半径 x = cos(th);y = sin(th); f = abs(fft(ones(10,1),128)); % 对离散方波进行 FFT 变换,并取幅值。 rho=ones(size(th))+f'; % 取单位圆为绘制幅频谱的基准。 subplot(1,2,1),polar(th,rho,'r') subplot(1,2,2),stem3(x,y,f','d','fill') % 取菱形离散杆头,并填色。 view( ) % 控制角度,为表现效果。 图 7.4.1 .8-1 离散方波的幅频谱 7.4.1.9 二维半图指令pcolor, contour, contourf 【 * 例 7.4.1 .9-1 】本例重点演示所谓“二维半”指令:伪彩图 pcolor ;等位线指令 contour 、 contourf ;等位线标高指令 clabel 的配合使用和区别。练习本例时注意:( 1 )本例等位线指令中的第 4 输入宗量 n 设定高度的等级数,第 5 输入宗量设定等位线的线型、色彩。( 2 )左右两图的标高方法不同。左图的标识以“ + ”引导,水平放置。右图沿线布置。这是由 clabel 的调用格式不同产生的。( 3 )左右两图色彩的形成方法不同,色彩效果也不同。( 4 )在左图中, colorbar 画出一根垂直色标尺,而 caxis 决定该色标尺的刻度。 clf;clear; =peaks(40); % 获得 peaks 图形数据 n=4; % 等高线分级数 subplot(1,2,1),pcolor(X,Y,Z) % 伪彩图 colormap jet,shading interp hold on,C=contour(X,Y,Z,n,'k:'); % 用黑虚线画等位线,并给出标识数据。 clabel(C) % 随机标识法 zmax=max(max(Z));zmin=min(min(Z));caxis( ) % 决定色标尺的范围 colorbar % 画垂直色标尺 hold off,subplot(1,2,2) =contourf(X,Y,Z,n,'k:'); % 用黑虚线画填色等位线,并给出标识数据。 clabel(C,h) % 沿线标识法 图 7.4.1 .9-1 “二维半”指令的演示 7.4.1.10 散点图scatter , scatter3 , plotmatrix 【 * 例 7.4.1 .10-1 】表现函数 。请注意本例中的 3 个指令:( 1 )散点图指令 scatter3 ,标志三维数据点。它的前三个输入宗量必须是同长的向量,如指令 5 。( 2 )带垂帘的网线图指令 meshz ,它的调用格式与 mesh 没有什么不同。此外,再次提醒读者注意指令 2 。这样处理的目的是避免 0/0 的不定性。该处理方法是求极限的一种数值方法。 x=3*pi*(-1:0.2:1);y=x; =meshgrid(x,y); R=sqrt(X.^2+Y.^2)+eps;Z=sin(R)./R;% 引入 eps 避免 0/0 , %2 C=abs(del2(Z)); % 求“五点格式”差分,反映曲面变化。 meshz(X,Y,Z,C) % 由曲面变化决定用色 hold on,scatter3(X(:),Y(:),Z(:),'filled') %5 hold off,colormap(hot) 图 7.4.1 .10-1 三维散点图 【 * 例 7.4.1 .10-2 】指令 plotmatrix 有两种基本调用方式:( 1 )对于数据矩阵 维的 X 和 维的 Y ,调用格式 plotmatrix(X,Y) 将画出一个分割成 个子散点图。其中第 个子散点图是根据 Y 第 列和 X 第 列数据画出的。( 2 )对于数据矩阵 维的 X ,调用格式 plotmatrix(X) 将画出分割成 个子块的图。该图的对角块,画出的是 X 每列的数据的频数直方图;而其他子块是相应列构成的散点图。该指令可用来观察数据矩阵(或同一矩阵列向量)间的统计关系。 randn('seed',1111),X=randn(100,2);Y=randn(100,2); subplot(1,3,1),plotmatrix(X) subplot(1,3,2),plotmatrix(X,X) subplot(1,3,3),plotmatrix(X,Y) 图 7.4.1 .10-2 plotmatrix 表现数据统计特性 7.4.1.11 不规则数据的网线图和曲面图 【 * 例 7.4.1 .11-1 】用三角网线、曲面图表现函数 。 rand('seed',22),X=6*pi*(rand(20,10)-0.5);Y=6*pi*(rand(20,10)-0.5); R=sqrt(X.^2+Y.^2)+eps;Z=sin(R)./R; tri=delaunay(X,Y); % 进行三角剖分 subplot(1,2,1),trimesh(tri,X,Y,Z) subplot(1,2,2),trisurf(tri,X,Y,Z) colormap(jet);brighten(0.5) % 增强亮度 图 7.4.1 .11-1 不规则数据的三维表现 7.4.1.12 泛函绘图指令fplot 【 * 例 7.4.1 .12-1 】 fplot 与一般绘图指令的绘图效果比较。 =fplot('cos(tan(pi*x))', ,0.2e-3);n=length(x); subplot(1,2,1),plot(x,y) title('/fontsize{20}/fontname{ 隶书 } 泛函绘图指令效果 ') t=(-0.4:1.8/n:1.4)'; subplot(1,2,2),plot(t,cos(tan(pi*t))) title('/fontsize{20}/fontname{ 隶书 } 等分采样绘图 ') 图 7.4.1 .12-1 右图曲线中底部有明显绘图缺陷 7.4.2 四维表现 7.4.2.1 用色彩表现函数的特征 【 * 例 7.4.2 .1-1 】用色图阵表现函数的不同特征。演示:当三维网线图、曲面图的第四个输入宗量取一些特殊矩阵时,色彩就能表现或加强函数的某特征,如梯度、曲率、方向导数等。 x=3*pi*(-1:1/15:1);y=x; =meshgrid(x,y); R=sqrt(X.^2+Y.^2)+eps;Z=sin(R)./R; =gradient(Z);dzdr=sqrt(dzdx.^2+dzdy.^2); % 计算对 r 的全导数 dz2=del2(Z); % 计算曲率 4 subplot(1,2,1),surf(X,Y,Z),title('No. 1 surf(X,Y,Z)') shading faceted,colorbar( 'horiz') ,brighten(0.2) subplot(1,2,2),surf(X,Y,Z,R),title('No. 2 surf(X,Y,Z,R)') shading faceted;colorbar( 'horiz') 图 7.4.2 .1-1 色彩分别表现函数的高度和半径特征 clf;subplot(1,2,1),surf(X,Y,Z,dzdx) shading faceted;brighten(0.1);colorbar( 'horiz') title('No. 3 surf(X,Y,Z,dzdx)') subplot(1,2,2),surf(X,Y,Z,dzdy) shading faceted;colorbar( 'horiz') title('No. 4 surf(X,Y,Z,dzdy)') 图 7.4.2 .1-2 色彩分别表现函数的 x 方向和 y 方向导数特征 subplot(1,2,1),surf(X,Y,Z,abs(dzdr)) shading faceted;brighten(0.6);colorbar( 'horiz') title('No. 5 surf(X,Y,Z,abs(dzdr))') subplot(1,2,2),surf(X,Y,Z,abs(dz2)) %17 shading faceted;colorbar( 'horiz') title('No. 6 surf(X,Y,Z,abs(dz2))') 图 7.4.2 .1-3 色彩分别表现函数的径向导数和曲率特征 7.4.2.2 切片图和切片等位线图 【 * 例 7.4.2 .2-1 】利用 slice 和 contourslice 表现 MATLAB 提供的无限大水体中水下射流速度数据 flow 。 flow 是一组定义在三维空间上的函数数据。 在本例中,从图中的色标尺可知,深红色表示“正速度”(向图的左方),深蓝表示“负速度”(向图的右方)。 % 以下指令用切面上的色彩表现射流速度 clf; =flow; % 取 4 个 的射流数据矩阵, V 是射流速度。 x1=min(min(min(X)));x2=max(max(max(X))); % 取 x 坐标上下限 y1=min(min(min(Y)));y2=max(max(max(Y))); % 取 y 坐标上下限 z1=min(min(min(Z)));z2=max(max(max(Z))); % 取 z 坐标上下限 sx=linspace(x1+1.2,x2,5); % 确定 5 个垂直 x 轴的切面坐标 sy=0; % 在 y=0 处,取垂直 y 轴的切面 sz=0; % 在 z=0 处,取垂直 z 轴的切面 slice(X,Y,Z,V,sx,sy,sz); % 画切片图 view( );shading interp;colormap jet;axis off;colorbar 图 7.4.2 .2-1 切片图 % 以下指令用等位线表现射流速度 clf;v1=min(min(min(V)));v2=max(max(max(V))); % 射流速度上下限 cv=linspace(v1,v2,15); % 在射流上下限之间取 15 条等位线 contourslice(X,Y,Z,V,sx,sy,sz,cv);view( ) colormap jet;colorbar;box on 图 7.4.2 .2-2 切片等位线图 7.4.3 动态图形 7.4.3.1 彗星状轨迹图 【 * 例 7.4.3 .1-1 】简单二维示例。(请读者自己在指令窗中运行以下指令。) shg;n=10;t=n*pi*(0:0.0005:1);x=sin(t);y=cos(t); plot(x,y,'g');axis square;hold on comet(x,y,0.01);hold off 【 * 例 7.4.3 .1- 2 】卫星返回地球的运动轨线示意。(请读者自己在指令窗中运行以下指令。) shg;R0=1; % 以地球半径为一个单位 a=12*R0;b=9*R0;T0=2*pi; %T0 是轨道周期 T=5*T0;dt=pi/100;t= '; f=sqrt(a^2-b^2); % 地球与另一焦点的距离 th=12.5*pi/180; % 卫星轨道与 x-y 平面的倾角 E=exp(-t/20); % 轨道收缩率 x=E.*(a*cos(t)-f);y=E.*(b*cos(th)*sin(t));z=E.*(b*sin(th)*sin(t)); plot3(x,y,z,'g') % 画全程轨线 =sphere(30);X=R0*X;Y=R0*Y;Z=R0*Z; % 获得单位球坐标 grid on,hold on,surf(X,Y,Z),shading interp % 画地球 x1=-18*R0;x2=6*R0;y1=-12*R0;y2=12*R0;z1=-6*R0;z2=6*R0; axis( ) % 确定坐标范围 view( ),comet3(x,y,z,0.02),hold off % 设视角、画运动轨线 图 7.4.3 .1-1 卫星返回地球轨线示意 7.4.3.2 色图的变幻 【例 7.4.3 .2-1 】色彩变幻(因印刷关系,无法表现。请读者自己在指令窗中运行以下指令。注意:在 256 色情况下,才可被正确执行) peaks spinmap 7.4.3.3 影片动画 【 * 例 7.4.3 .3-1 】三维图形的影片动画。(因印刷关系,无法表现本例。请读者自己在指令窗中运行以下指令。) clf;shg,x=3*pi*(-1:0.05:1);y=x; =meshgrid(x,y); R=sqrt(X.^2+Y.^2)+eps; Z=sin(R)./R; h=surf(X,Y,Z);colormap(jet);axis off n=12;mmm=moviein(n); % 预设画面矩阵。新版完全可以取消此指令 。 for i=1:n rotate(h, ,25); % 是图形绕 z 轴旋转 25 度 / 每次 mmm(:,i)=getframe; % 捕获画面。新版改为 mmm(i)=getframe 。 end movie(mmm,5,10) % 以每秒 10 帧速度,重复播放 5 次
5610 次阅读|0 个评论
[转载]Matlab的曲线拟合工具箱CFtool使用简介
willzhang198 2011-12-11 12:59
今天帮同学做了一个非线性函数的曲线拟合,以前没做过,所以是摸着石头过河。费了一下午时间,终于把曲线拟合出来了,顺道也学习了使用 Matlab 进行曲线拟合的方法,把学习所得记录下来,和大家共享。 一、 单一变量的曲线逼近 Matlab 有一个功能强大的曲线拟合工具箱 cftool ,使用方便,能实现多种类型的线性、非线性曲线拟合。下面结合我使用的 Matlab R2007b 来简单介绍如何使用这个工具箱。 假设我们要拟合的函数形式是 y=A*x*x + B*x, 且 A0,B0 。 1 、在命令行输入数据: 》 x= ; 》 y= ; 2 、启动曲线拟合工具箱 》 cftool 3 、进入曲线拟合工具箱界面 “Curve Fitting tool” ( 1 )点击 “Data” 按钮,弹出 “Data” 窗口; ( 2 )利用 X data 和 Y data 的下拉菜单读入数据 x,y ,可修改数据集名 “Data set name” ,然后点击 “Create data set” 按钮,退出 “Data” 窗口,返回工具箱界面,这时会自动画出数据集的曲线图; ( 3 )点击 “Fitting” 按钮,弹出 “Fitting” 窗口; ( 4 )点击 “New fit” 按钮,可修改拟合项目名称 “Fit name” ,通过 “Data set” 下拉菜单选择数据集,然后通过下拉菜单 “Type of fit” 选择拟合曲线的类型,工具箱提供的拟合类型有: Custom Equations :用户自定义的函数类型 Exponential :指数逼近,有 2 种类型, a*exp(b*x) 、 a*exp(b*x) + c*exp(d*x) Fourier :傅立叶逼近,有 7 种类型,基础型是 a0 + a1*cos(x*w) + b1*sin(x*w) Gaussian :高斯逼近,有 8 种类型,基础型是 a1*exp(-((x-b1)/c1)^2) Interpolant :插值逼近,有 4 种类型, linear 、 nearest neighbor 、 cubic spline 、 shape-preserving Polynomial :多形式逼近,有 9 种类型, linear ~ 、 quadratic ~ 、 cubic ~ 、 4-9th degree ~ Power :幂逼近,有 2 种类型, a*x^b 、 a*x^b + c Rational :有理数逼近,分子、分母共有的类型是 linear ~ 、 quadratic ~ 、 cubic ~ 、 4-5th degree ~ ;此外,分子还包括 constant 型 Smoothing Spline :平滑逼近(翻译的不大恰当,不好意思) Sum of Sin Functions :正弦曲线逼近,有 8 种类型,基础型是 a1*sin(b1*x + c1) Weibull :只有一种, a*b*x^(b-1)*exp(-a*x^b) 选择好所需的拟合曲线类型及其子类型,并进行相关设置: —— 如果是非自定义的类型,根据实际需要点击 “Fit options” 按钮,设置拟合算法、修改待估计参数的上下限等参数; —— 如果选 Custom Equations ,点击 “New” 按钮,弹出自定义函数等式窗口,有 “Linear Equations 线性等式 ” 和 “General Equations 构造等式 ” 两种标签。 在本例中选 Custom Equations ,点击 “New” 按钮,选择 “General Equations” 标签,输入函数类型 y=a*x*x + b*x ,设置参数 a 、 b 的上下限,然后点击 OK 。 ( 5 )类型设置完成后,点击 “Apply” 按钮,就可以在 Results 框中得到拟合结果,如下例: general model: f(x) = a*x*x+b*x Coefficients (with 95% confidence bounds): a = 0.009194 (0.009019, 0.00937) b = 1.78e-011 (fixed at bound) Goodness of fit: SSE: 6.146 R-square: 0.997 Adjusted R-square: 0.997 RMSE: 0.8263 同时,也会在工具箱窗口中显示拟合曲线。 这样,就完成一次曲线拟合啦,十分方便快捷。当然, 如果你觉得拟合效果不好,还可以在 “Fitting” 窗口点击 “New fit” 按钮,按照步骤( 4 ) ~ ( 5 )进行一次新的拟合 。 不过,需要注意的是, cftool 工具箱只能进行单个变量的曲线拟合 ,即待拟合的公式中,变量只能有一个。对于混合型的曲线,例如 y = a*x + b/x ,工具箱的拟合效果并不好。下一篇文章我介绍帮同学做的一个非线性函数的曲线拟合。
2773 次阅读|0 个评论
光变曲线笔记(二)
qianlivan 2011-11-22 18:16
光变曲线笔记(二)
白矮星的典型半径大约是数千公里,和地球这样的固体行星个头相当。所以如果有一颗这样的行星围绕白矮星转动,并且轨道平面和我们的视线平行,我们应该可以看到这颗白矮星的掩食。在时域巡天中应该可以看到这样的系统。 这样的系统的光变曲线在亮度上应该可以分为三层,最亮的点对应白矮星爆发,中间的点对应正常状态时的白矮星,而亮度较低的点对应被掩食的白矮星。这样的光变曲线在CRTS中确实存在,就是本文末尾的那些。对于掩食的系统而言,光变曲线还应该是周期性的,但是对于光学观测来说有一个本质的困难——只能在半年内对同一个源进行观测,因为另外半年源在白天出现。所以从光变曲线中看到的周期性很多是由这个效应造成的虚假效应,这使得半年的整数倍的周期难以确认。但是光变曲线的分层现象还是可以看出来的,虽然其实也不是很明显。 研究白矮星的行星对于研究小质量恒星的死亡有一定意义。比如可以研究行星是否还有大气,如果有大气,成份为何?恒星变为白矮星之前的红巨星阶段对行星有多大的影响等等。但是如果想在白矮星周围找到宜居行星估计是不太可能的。 801301180474127786 802270090614112866 802281040444132343 812311430294141229 903291210784144089 906221181134169457 906221181174111096 910090040064127915 911231010114107310 1005240041134109468 1105130041134149159 1106111320694137973 1111011291114153567
个人分类: 思考|5193 次阅读|0 个评论
二、交通需求是概念非事实
weberfrank 2011-8-14 11:35
接 第四节交通需求理论 首先,交通需求不是“度量”的概念,是没有高低多少的。高和低是指交通需求量。交通需求和交通需求量都是无从观察到的概念。经济学上,(个体)需求量是指在某价格(代价)水平下人所意图换取的物品量(注)。类似地,供应量也是人的意图。二者都非事实,是理论要求虚构的概念。又因为只是意图,所以需求量和供给量不一定相等。但经济学家提出了另一个虚构概念“均衡”(equilibrium),定义需求量与供应量相等是均衡状态,也是理论的需要。概念上,需求量是指在不同的价格(换值)下,消费者意图换取的最高的量。需求量与实际购买量不同,供给量与实际出售量也不同。而购买量永远等于出售量,但同学们要注意,这却不是均衡的定义。 那么,(个体)交通需求量则定义为在终点成本和交通代价(换值)下,出行者 意图 获取交通服务,从而进行社会经济活动,而发生的交通运输量(trip)。需要指出,交通需求量是对交通服务全部质的意图获取量,包括可达条件的量、速度的量、空间的量、安全的量、清静的量等。任何一种质的量增加都是需求量增加,反之亦然。这些量常委托在某种交通工具的出行量中,如单位时间内的人流量(人次)、车流量(车次)和货流量(吨)或人公里数、车公里数和吨公里数。只有当可以假定交通服务的全部质不变时,交通需求量的增加,才会表现为上述委托量(交通运输量)的增加。这里交通服务的质的概念首次出现,是先提个醒,其详细论述被安排在了本章第五节。 以需求定律解释交通行为,要么单以交通需求量转变的含意来解释现象,要么是将交通需求量的变动与交通运输量的变动挂钩。这两种方法之外,别无他选,决不能直接将交通需求量等价于交通运输量。第一种方法,简单容易理解,例如出差外地,可选黑车和的士,的士会被选择,是需求定律的含意。若选黑车,需求定律就被推翻了。拥挤的公路,公交车辆会走公交专用道,若不走也推翻了需求定律。若安装了电子警察后,车辆纷纷超速、闯红灯,也推翻了需求定律。等等这些现象,都可以通过需求量的转变来解释或验证。 第二种方法要将需求量的变动与交通运输量的变动挂钩。譬如已知,交通需求量的定义是指在不同终点成本和交通代价下,出行者意图换取交通服务的最高量。那么,假设终点成本不变而当交通代价变化时,交通需求量与交通运输量在逻辑上的动向相同。这是说,边际转变相同,将这二者挂钩了。用图形表示这一联系,交通需求量的曲线是交通运输量的曲线向右平移得到。 图1.4 交通需求量在交通运输量右方 由于需求量是虚构的概念,因此图1.4所示的交通需求量右下倾斜的曲线用虚线表示。实曲线,则为交通需求理论的推断,也即真实交通运输量对理论的验证。这是说,在给定条件下,倘若交通服务代价下降,而交通运输量曲线没有向下倾斜,那么上述交通需求理论就被推翻了。 三、交通需求是整条向右下倾斜的曲线 身边经常发生,假期机票价格上升了,而外出旅游的交通运输量也同时增加了。这现象推翻交通需求理论了吗?答案是没有。我们不妨假设一户主年收入36.5万,其每天平均收入为1000元。因为假期到来,其每天的收入既可以用以居家煮饭,也可以出门旅游,不受非假期的8小时坐班和第二天早起的约束。与每天的收入只能用于居家度日相比,假期的收入所值增加了。因此,假期(是个变量),影响了“旅游需求”,使的“其他条件”保持不变不再成立,而整条需求曲线因此向右移动了。因为这移动,交通需求量也就增加了,但这增加可不是由代价上升变动引起的。用图来说明, 图1.5整条曲线向右移动,Q'Q 因此,并非是这一案例推翻了交通需求理论,而是我们忽视了某些局限条件的转变(收入)。上述演示说明了,“交通需求”与“交通需求量”与“交通运输量”是三个不同的概念:交通需求的变动,是由于所考虑代价之外的其它因素(变量)而引起的曲线整体移动。交通需求是其他条件不变的情况下,需求量与价的关系。仅由于代价变动而沿需求曲线的移动是交通需求量的变动,此时的需求曲线本身没有变动。而交通运输量的变动是交通需求量变动的推断和验证,交通需求量变动则是交通运输量变动的解释。 简而言之,交通需求是整条向下倾斜的曲线,曲线上的每个点是某代价对应的交通需求量。从边际上看,交通运输量曲线是一个交通需求状态的推断。 未完待续
个人分类: TRANSPORTATION|5360 次阅读|0 个评论
艺术的曲线也数学
热度 23 lixuekuan 2011-6-5 09:20
艺术的曲线也数学
昨天摄于汾河二库。
个人分类: 美图欣赏|6571 次阅读|55 个评论
让 电压-电流曲线 变得不再“单调”
jixuanhou 2009-5-6 01:19
你是否已经厌倦了普通的电压-电流曲线?它就是一根直线,线性的欧姆定律是否已经让你觉得乏味? 你是否也看腻了二极管那几十年不变的电压-电流曲线?几十年前它可是个香饽饽,不过现在它已经翻不出什么新花样了。 那么现在我们就让电压-电流曲线翻点新花样吧!!! 1、量子点与负电阻 量子点是今年来科学研究的热点。考虑如下图所示的一个与源和漏接触的二能级量子点。 当在源和漏上加上电压,那么量子点上就会有电流通过。我们将量子点两边的电势差逐渐增大。当量子点两边的电势差与量子点本身的基态与激发态的能级差相等的时候,就会发生共振,这时电流会忽然增大。当量子点两边的电势差继续增大时,共振条件就不满足,电流就会减小。当量子点两边的电势差增加到量子点能级差的两倍时,又会出现共振现象,电流又会很快增加。如此反复,如下图所示 有趣的是,这将出现负电阻区域,在这些区域里,增大电压,电流反而会减小。 下图显示的是Au(111)-SC5-Fc-Au(111)结的电压-电流曲线,其不规则的形状显示了复杂的分子内部结构。 2、无序绝缘体与电压-电流曲线的跳跃 对无序绝缘体(如InO, TiN和YSi的无序薄膜)的实验观测发现,在低温下如果增加电压超过一定阈值V 1 后,电流会忽然增加几个数量级。如果再降低电压,到底某个阈值V 2 后,电流会忽然减小几个数量级。V 2 V 1 . 如下图所示 其机理如下:考虑电子的运动、晶格的振动(声子的运动),以及电子-声子相互作用。由于电子-声子相互作用非常弱,所以不足以让电子和声子达到热平衡。声子处于较低温度T ph ,而电子受到电流焦耳热的加热,处于较高的温度T e 。T ph T e . 这会导致系统可以处于热的低阻态和冷的高阻态。计算结果显示,整个I-V曲线呈现一个S型,如下图 其中包含一段非物理的虚线,实际系统是不会按照虚线行走的,所以当系统到达V 1 或者V 2 后,会直接跳跃到另一个态上。该过程和过冷汽体凝结成液体、过热液体暴沸成气体的道理是一样的。 总结 现在I-V曲线已经不再是单调连续的了,在新奇的系统中会有新鲜的花样产生。让I-V曲线在数学上不单调,那么看起来也就不单调了。
个人分类: 科学视角|13511 次阅读|11 个评论
在R中求曲线面积的积分
lobo 2009-3-18 22:14
用integrate函数就可以了 具体可以见R的帮助 ==================================== 下面给出实例代码: result-integrate(sin,0,pi) names(result) #查看integrate函数返回结果的元素 value abs.error subdivisions message call result #第一个元素是最需要了解的 $value 2 integrate(sin,0,pi) 2 with absolute error 2.2e-14 integrate(sin,pi,0) #注意这两个结果正负号的不同 -2 with absolute error 2.2e-14 #曲线面积是要考虑正负号的: integrate(sin,0,2*pi) #结果接近于0 2.032977e-16 with absolute error 4.4e-14 abs.sin-function(x) + { + return (abs(sin(x))) + } integrate(abs.sin,0,2*pi) #这样就得到了总面积的绝对值 4 with absolute error 4.4e-14 #自定义函数也可以求面积: my.fun-function(x) + { + return (2*x+1) + } integrate(my.fun, 0,3) 12 with absolute error 1.3e-13
个人分类: 未分类|13936 次阅读|0 个评论

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-6-6 08:57

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部