搜档网
当前位置:搜档网 › Matlab经典案例

Matlab经典案例

Matlab经典案例
Matlab经典案例

1、三维曲线

>> t=0:pi/50:10*pi;

>> plot3(sin(2*t),cos(2*t),t) >> axis square

>> grid on

2、一窗口多图形

>> t=-2*pi:0.01:2*pi;

>> subplot(3,2,1)

>> plot(t,sin(t))

>> subplot(3,2,2)

>> plot(t,cos(t))

>> subplot(3,2,3)

>> plot(t,tan(t))

>> axis([-pi pi -100 100]) >> subplot(3,2,4)

>> plot(t,cot(t))

>> axis([-pi pi -100 100]) >> subplot(3,2,5)

>> plot(t,atan(t))

>> subplot(3,2,6)

>> plot(t,acot(t))

3、图形样式、标注、题字(也可以利用菜单直接

Insert) >> x=0:pi/20:2*pi;

>> plot(x,sin(x),'b-.')

>> hold on

>> plot(x,cos(x),'r--')

>> hold on

>> plot(x,sin(x)-1,'g:')

>> hold on

>> plot(x,cos(x)-1)

>> xlabel('x');

>> xlabel('x轴');

>> ylabel('y轴');

>> title('图形样式、标注等');

>> text(pi,sin(pi),'x=\pi');

>> legend('sin(x)','cos(x)','sin(x)-1','cos(x)-1');

>> [x1,y1]=ginput(1) %利用鼠标定位查找线上某点的值x1 =

2.0893

y1 =

-0.5000

>> gtext('x=2.5') %鼠标定位放置所需的值在线上

4、

>> fplot('[sin(x),cos(x),sqrt(x)-1]',[0 2*pi])

M文件:myfun.m

内容如下:

function y=myfun(x)

y(:,1)=sin(x);

y(:,2)=cos(x);

y(:,3)=x^(1/2)-1;

再运行:>> fplot('myfun',[0 2*pi])

同样可以得到右图

5、

>> [x,y]=fplot('sin',[0 2*pi]);

>> [x1,y1]=fplot('cos',[0 2*pi]);

>> plot(x,y,'-r',x1,y1,'-.k')

>> legend('y=sinx','y=cosx')

6、

>> x=[-2:0.2:2];

9、用双轴对数坐标绘制y=x*3^x-30的图形>> x=logspace(-3,3);

>> loglog(y,'-or','linewidth',2);

>> grid on

10、绘制数据向量的单轴对数坐标图形 >> x=[1:50]; >> y=[1:50];

>> semilogx(x,y,'-*b') %绘制横轴为对数坐标 %纵轴为线性坐标 >> grid on

>> semilogy(x,y,'-*b') %绘制纵轴为对数坐标 %横轴为线性坐标 >> grid on

11、绘制矩阵的条形图, 并求出句柄属性值向量。 >> A=[1 2 3;4 5 6;7 8 9]; >> h=bar(A) h =

171.0031 174.0026 176.0026

12、绘制矩阵的水平条形图。 >> y=[3 2 -2 2 1;-1 2 3 7 1;7 2 -3 5 2]; >> x=[1:3];

>> barh(x,y)

13、绘制矩阵的面积图。

>> y=[3 2 -2 2 1;-1 3 3 7 2;-7 5 5 9 3];

>> area(y)

14、绘制矩阵的二维饼图

>> x=[1 2 3;4 5 6;7 8 9];

>> explode=[0 1 0 1 0 1 0 1 0];

>> pie(x,explode)

15、自行确定数据向量,绘制其散点图。>> x=rand(1,100);y=randn(1,100);scatter(x,y,20) 16、自行确定数据,绘制其柱形图。

>> x=[-2:0.01:4];

>>y=randn(1131,1);

>>hist(y,x)

17、绘制y=sinx在[0,2*pi] 上的误差图。

>> x=[0:pi/20:2*pi];

>> y=sin(x);

>> E=std(y)*ones(size(x));

%条形控制

>> errorbar(x,y,E)

18、绘制火柴杆图。

>> x=[1 1.5 2;3 3.5 4;5 5.5 6]; >> y=[4 3 2;4 8 9;2 7 3]; >> stem(x,y,'fill')

%fill意思是“实心点”Array

19、绘制羽列图。

>> U=[-90:5:90]*pi/180;

%建立等间距数据

>> V=2*ones(size(U));

%根据U建立数据

>> [U,V]=pol2cart(U,V);

转换数据为直角坐标形式

>> feather(U,V)

20、同一窗口绘制

和在[0,30]上的图形。

>> x=[0:0.01:30];

>> y1=50*exp(-0.05*x).*sin(x);

>> y2=0.5*exp(-0.5*x).*cos(x);

>> plotyy(x,y1,x,y2,'plot')

% plotyy(x,y1,x,y2,'plot')表示:

用左侧y标度绘制(x,y1)

用右侧y标度绘制(x,y2)

21、绘制8阶魔方矩阵的等值线图和阶梯图。

>> A=magic(8);contour(A) %绘制等值线图stairs(A) %绘制阶梯图

23、绘制罗盘图。

>> x=rand(20,1);y=randn(20,1);

>> compass(x,y)

24、绘制函数的梯度场矢量图。

>> [x,y]=meshgrid([-2:0.1:2]); %建立栅格点数据向量 >> z=3.*x.*y*exp(-x.^2-y.^2)-1; %计算函数值向量 >> [u,v]=gradient(z,0.2,0.2); %计算梯度值向量 >> quiver(x,y,u,v,2) %绘制梯度场矢量图

25、给定向量x,y 生成网格矩阵。 >> x=[1 2 3 4];

>> y=[10 11 12 13 14]; >> [U,V]=meshgrid(x,y) U =

1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 V =

10 10 10 10 11 11 11 11 12 12 12 12 13 13 13 13 14 14 14

14

27、在-4<=x<=4,-4<=y<=4区域上 绘制z=x^2+y^2的三维网格图。 >> [x,y]=meshgrid(-4:0.125:4); >> z=x.^2+y.^2; >> meshc(x,y,z)

28

、绘制高斯分布函数的网格图。

>> [x,y]=meshgrid(-3:0.125:3); >> z=peaks(x,y);

>> meshz(x,y,z)

29、用surf >> [x,y]=meshgrid(-3:0.125:3); >>z=peaks(x,y); >>surf(x,y,z)

30、绘制曲线图。

>> t=[0:pi/200:10*pi];

>> x=2*cos(t);

>> y=3*sin(t);

>> z=t.^2;

>> plot3(x,y,z)

31、利用peaks函数产生的数据绘制其带形图。>> [x,y]=meshgrid([-2*pi:pi/5:2*pi],[-2:1/5:2]); >> z=peaks(x,y);

>> ribbon(y,z) Array

32、绘制三维饼图。

>> A=[1 2 3;4 5 6;7 8 9];

>> ex=[1 0 0;4 0 0;0 8 0];

>> pie3(A,ex)

33、在各种style参数的条件下绘制矩阵的三维条形图。

>> z=[1 2 3;4 5 6;7 8 9];

>>bar3(z,'detached')

>>title('bar3函数以detached参数绘制A=[1 2 3;4 5 6;7 8 9]的条形图') >> bar3(z,'grouped')

>> title('bar3函数以grouped参数绘制A=[1 2 3;4 5 6;7 8 9]的条形图') >> bar3(z,'stacked')

>> title('bar3函数以stacked参数绘制A=[1 2 3;4 5 6;7 8 9]的条形图')

34、绘制柱形图。 >> t=[0:pi/50:2*pi];

>> [x,y,z]=cylinder(t.*sin(t)); >> surf(x,y,z) >> cylinder(t.^2)

>> title('cylinder(t^2)绘制的柱形图')

、绘制三维火柴杆图。 >> x=[1:0.5:20]; >> y=sqrt(x);

>> z=sqrt(x.^2+y.^2); >> stem3(x,y,z,'filled')

37、绘制高斯分布函数的三维瀑布图。>> [x,y]=meshgrid(-4:0.05:4);

>> z=peaks(x,y);

>> waterfall(x,y,z)

38、绘制等值线图。

>> [x,y]=meshgrid(-3:0.1:3);

>> z=2-x.^2-y.^2;

>> contour3(z,20)

39、绘制一个球面。

>> [x,y,z]=sphere(40);

>> surf(x,y,z)

40、绘制三角形网格图和三角形表面图。>> [x,y]=meshgrid(-3:0.5:3);

>> z=x.*exp(-x.^2-y.^2);

>> tri=delaunay(x,y);

%建立三角形网格

>> trimesh(tri,x,y,z)

>> trisurf(tri,x,y,z)

41、绘制一个三维彗星图。

>> t=[-3*pi:pi/100:3*pi];

>> x=3.*cos(t);

>> y=2.*sin(t);

>> z=t.^2;

>> comet3(x,y,z)

42、绘制曲面z的表面法向量向量图。

>> [x,y]=meshgrid([-3:0.2:3],[-2:0.5:2]);

>> z=x.*exp(-x.^2-y.*2);

>> [u,v,w]=surfnorm(x,y,z); %计算表面法向向量>> quiver3(x,y,z,u,v,w,1.2) %绘制三维向量图>> hold on

>> surf(x,y,z)

>> hold off

43、绘制空间立体在-2<=x<=2, -2<=y<=2, -2<=z<=2上的切片图。>> [x,y,z]=meshgrid(-2:0.2:2);

>> v=x.*exp(-x.^2-y.^2-z.^2);

>> xi=[-1.2 0.8 2];yi=2;zi=[-2 -0.2];

>> slice(x,y,z,v,xi,yi,zi)

44、在【-pi,pi】上制作一个不断绘制正弦曲线的动画。

>> x=[-pi:0.02:pi];

>> y=sin(x);

>> h=plot(x,y,'r-')

h =

171.0011

>> axis([-4 4 -1 1])

>> axis square

>> grid off

>> set(h,'erasemode','xor','markersize',10) >> while 1

drawnow

x=x+0.01;

y=sin(x)-0.01;

set(h,'xdata',x,'ydata',y)

if(x>pi)|(y<-1)

x=[-pi:0.02:pi];

y=sin(x);

end

end

47、cool 色图+faceted 系统默认颜色阴影和默认色图jet+interp 颜色阴影绘制peaks 函数图。

48

、创建一个三维表面图并设置不同的视点。

>> [x,y]=meshgrid([-3:0.2:3]); >> z=x.*exp(-x.^2-y.^2); >> surf(z)

>> [ax,el]=view ax =

-37.5000 el =

30

>> view(30,-30)

49、绘图工具栏介绍。

几种常见窗函数及其MATLAB程序实现

几种常见窗函数及其MATLAB程序实现 2013-12-16 13:58 2296人阅读评论(0) 收藏举报 分类: Matlab(15) 数字信号处理中通常是取其有限的时间片段进行分析,而不是对无限长的信号进行测量和运算。具体做法是从信号中截取一个时间片段,然后对信号进行傅里叶变换、相关分析等数学处理。信号的截断产生了能量泄漏,而用FFT算法计算频谱又产生了栅栏效应,从原理上讲这两种误差都是不能消除的。在FFT分析中为了减少或消除频谱能量泄漏及栅栏效应,可采用不同的截取函数对信号进行截短,截短函数称为窗函数,简称为窗。 泄漏与窗函数频谱的两侧旁瓣有关,对于窗函数的选用总的原则是,要从保持最大信息和消除旁瓣的综合效果出发来考虑问题,尽可能使窗函数频谱中的主瓣宽度应尽量窄,以获得较陡的过渡带;旁瓣衰减应尽量大,以提高阻带的衰减,但通常都不能同时满足这两个要求。 频谱中的如果两侧瓣的高度趋于零,而使能量相对集中在主瓣,就可以较为接近于真实的频谱。不同的窗函数对信号频谱的影响是不一样的,这主要是因为不同的窗函数,产生泄漏的大小不一样,频率分辨能力也不一样。信号的加窗处理,重要的问题是在于根据信号的性质和研究目的来选用窗函数。图1是几种常用的窗函数的时域和频域波形,其中矩形窗主瓣窄,旁瓣大,频率识别精度最高,幅值识别精度最低,如果仅要求精确读出主瓣频率,而不考虑幅值精度,则可选用矩形窗,例如测量物体的自振频率等;布莱克曼窗主瓣宽,旁瓣小,频率识别精度最低,但幅值识别精度最高;如果分析窄带信号,且有较强的干扰噪声,则应选用旁瓣幅度小的窗函数,如汉宁窗、三角窗等;对于随时间按指数衰减的函数,可采用指数窗来提高信噪比。表1 是几种常用的窗函数的比较。 如果被测信号是随机或者未知的,或者是一般使用者对窗函数不大了解,要求也不是特别高时,可以选择汉宁窗,因为它的泄漏、波动都较小,并且选择性也较高。但在用于校准时选用平顶窗较好,因为它的通带波动非常小,幅度误差也较小。

2019年matlab优化工具箱的使用

优化工具箱的使用 MATLAB的优化工具箱提供了各种优化函数,这些优化函数可以通过在命令行输入相应的函数名加以调用;此外为了使用方便,MA TLAB还提供了图形界面的优化工具(GUI Optimization tool)。 1 GUI优化工具 GUI优化工具的启动 有两种启动方法: (1)在命令行输入optimtool; (2)在MA TLAB主界面单击左下角的“Start”按钮,然后依次选择“Toolboxes→Optimization→Optimization tool” GUI优化工具的界面 界面分为三大块: 左边(Problem Setup and Results)为优化问题的描述及计算结果显示; 中间(Options)为优化选项的设置; 右边(Quick Reference)为帮助。为了界面的简洁,可以单击右上角“<<”、“>>”的按钮将帮助隐藏或显示。 1、优化问题的描述及计算结果显示 此板块主要包括选择求解器、目标函数描述、约束条件描述等部分。 选择合适的求解器以及恰当的优化算法,是进行优化问题求解的首要工作。 ?Solver:选择优化问题的种类,每类优化问题对应不同的求解函数。 ?Algorithm:选择算法,对于不同的求解函数,可用的算法也不同。 Problem框组用于描述优化问题,包括以下内容: ?Objective function: 输入目标函数。 ?Derivatives: 选择目标函数微分(或梯度)的计算方式。 ?Start point: 初始点。 Constraints框组用于描述约束条件,包括以下内容: ?Linear inequalities: 线性不等式约束,其中A为约束系数矩阵,b代表约束向量。 ?Linear equalities: 线性等式约束,其中Aeq为约束系数矩阵,beq代表约束向量。 ?Bounds: 自变量上下界约束。 ?Nonlinear Constraints function; 非线性约束函数。 ?Derivatives: 非线性约束函数的微分(或梯度)的计算方式。 Run solver and view results框组用于显示求解过程和结果。 (对于不同的优化问题类型,此板块可能会不同,这是因为各个求解函数需要的参数个数不一样,如Fminunc 函数就没有Constraints框组。) 2、优化选项(Options) ?Stopping criteria: 停止准则。

matlab编程实现求解最优解

《现代设计方法》课程 关于黄金分割法和二次插值法的Matlab语言实现在《现代设计方法》的第二章优化设计方法中有关一维搜索的最优化方法的 一节里,我们学习了黄金非分割法和二次插值法。它们都是建立在搜索区间的优先确定基础上实现的。 为了便于方便执行和比较,我将两种方法都写进了一个程序之内,以选择的方式实现执行其中一个。下面以《现代设计方法》课后习题为例。见课本70页,第2—7题。原题如下: 求函数f(x)=3*x^2+6*x+4的最优点,已知单谷区间为[-3,4],一维搜索精度为0.4。 1、先建立函数f(x),f(x)=3*x^2+6*x+4。函数文件保存为:lee.m 源代码为:function y=lee(x) y=3*x^2+6*x+4; 2、程序主代码如下,该函数文件保存为:ll.m clear; a=input('请输入初始点'); b=input('请输入初始步长'); Y1=lee(a);Y2=lee(a+b); if Y1>Y2 %Y1>Y2的情况 k=2; Y3=lee(a+2*b); while Y2>=Y3 %直到满足“大,小,大”为止 k=k+1; Y3=lee(a+k*b); end A=a+b;B=a+k*b; elseif Y1=Y3 %直到满足“大,小,大”为止 k=k+1; Y3=lee(a-k*b); end A=a-k*b;B=a; else A=a;B=a+b; %Y1=Y2的情况 end disp(['初始搜索区间为',num2str([A,B])])%输出符合的区间 xuanze=input('二次插值法输入0,黄金分割法输入1');%选择搜索方式 T=input('选定一维搜索精度'); if xuanze==1 while B-A>T %一维搜索法使精度符合要求 C=A+0.382*(B-A);D=A+0.618*(B-A); %黄金分割法选点

MATLAB优化工具箱应用简介

MATLAB优化工具箱 1 工具箱概述 1.1 功能 (1)求解无约束条件非线性极小值; (2)求解约束条件下非线性极小值,包括目标逼近问题、极大-极小值问题和半无限极小值问题; (3)求解二次规划和线性规划问题; (4)非线性最小二乘逼近和曲线拟合; (5)非线性系统的方程求解; (6)约束条件下的线性最小二乘优化; (7)求解复杂结构的大规模优化问题。 1.2 工具箱的新特色 MATLAB R2008b使用的是4.1版本的优化工具箱,较3.x的变化在于: (1)fmincon、fminimax和fgoalattain中引入了并行机制,加快梯度计算速度; (2)函数gatool和pserchtool整合到优化工具箱GUI中; (3)函数fmincon的求解器中新增内点算法; (4)提供了KNITRO优化库的接口; (5)函数lsqcurvefit、lsqnonlin和fsolve的优化选项参数PrecondBandWinth默认值由0变为inf; (6)优化选项参数TolConSQP的默认值改为1e-6; (7)输出结构中引入了参数constrviolation。 2 工具箱函数 常用函数: 输入参数中可以用options,用于所有函数,其中包括有一下参数。 (1)Display:结果显示方式,off不显示,iter显示每次迭代的信息,final为最终结果,notify只有当求解不收敛的时候才显示结果。 (2)MaxFunEvals:允许函数计算的最大次数,取值为正整数。 (3)MaxIter:允许迭代的最大次数,正整数。 (4)TolFun:函数值(计算结果)精度,正整数。 (5)TolX:自变量的精度,正整数。 而且可以用函数optimset创建和修改。 模型输入时需要注意问题: (1)目标函数最小化;

CA码生成原理及matlab程序实现

作业:用Matlab写C/A码生成器程序,并画生成码的方波图。 C/A码生成原理 C/A 码是用m 序列优选对组合形成的Gold 码。Gold码是由两个长度相同而互相关极大值为最小的m 序列逐位模2 相加所得到的码序列。它是由两个10 级反馈移位寄存器组合产生的,其产生原理如图1 所示。 图1 C/A码生成原理 发生器的抽头号为3和10,发生器的抽头号为2、3、6、8、9、10;发生器的第10位输出的数字即为码,而码是由的两个抽头的输出结果进行模2相加得到。 卫星的PRN码与延时的量是相关联的,对C/A码来说,每颗卫星都有特别的延时,如第1颗GPS卫星的G2 抽为2、6,第2颗为3、7,第3 颗为4、8,第4 颗为5、9 等,如图2所示。通过G2 相位选择可以产生结构不同的伪随机码,从而可以实现不同卫星之间的码分多址技术与卫星识别。

图2 prn序号与G2抽头、时延对应关系 基于MATLAB的GPS信号实现 编写成“codegen”程序,输入[ca_used]=codegen(svnum),其中svnum为卫星号,ca_used 为得到的C/A码序列。程序具体实现流程如下: 在程序中定义一个数组,使得卫星号与G2的码片延时一一对应。 gs2=[5;6;7;8;17;18;139;140;141;251;252;254;255;256;257;258;469;470;471;472;473;474;509;512 ;513;514;515;516;859;860;861;862]; 定义两个1×1 023 的数组g1、g2 用来存放生成的Gold 码。定义一个全1 的10 位数组,作为移位寄存器,相当于G1、G2 生成模块的初值均置为全“1”。按原理式

Matlab图形绘制经典案例

Matlab图形绘制经典案例 1、 三维曲线 >> t=0:pi/50:10*pi; >> plot3(sin(2*t),cos(2*t),t) >> axis square >> grid on

2、一窗口多图形>> t=-2*pi:0.01:2*pi; >> subplot(3,2,1)

>> plot(t,sin(t)) >> subplot(3,2,2) >> plot(t,cos(t)) >> subplot(3,2,3) >> plot(t,tan(t)) >> axis([-pi pi -100 100]) >> subplot(3,2,4) >> plot(t,cot(t)) >> axis([-pi pi -100 100]) >> subplot(3,2,5) >> plot(t,atan(t)) >> subplot(3,2,6) >> plot(t,acot(t))

3、图形样式、标注、题字(也可以利用菜单直接Insert) >> x=0:pi/20:2*pi;

>> plot(x,sin(x),'b-.') >> hold on >> plot(x,cos(x),'r--') >> hold on >> plot(x,sin(x)-1,'g:') >> hold on >> plot(x,cos(x)-1) >> xlabel('x'); >> xlabel('x轴'); >> ylabel('y轴'); >> title('图形样式、标注等'); >> text(pi,sin(pi),'x=\pi'); >> legend('sin(x)','cos(x)','sin(x)-1','cos(x)-1'); >> [x1,y1]=ginput(1) %利用鼠标定位查找线上某点的值x1 = 2.0893 y1 = -0.5000 >> gtext('x=2.5') %鼠标定位放置所需的值在线上

基于matlab程序实现人脸识别

基于m a t l a b程序实现 人脸识别 TYYGROUP system office room 【TYYUA16H-TYY-TYYYUA8Q8-

基于m a t l a b程序实现人脸识别 1.人脸识别流程 基于YCbCr颜色空间的肤色模型进行肤色分割。在YCbCr色彩空间内对肤色进行了建模发现,肤色聚类区域在Cb—Cr子平面上的投影将缩减,与中心区域显着不同。采用这种方法的图像分割已经能够较为精确的将人脸和非人脸分割开来。 人脸识别流程图 2.人脸识别程序 (1)人脸和非人脸区域分割程序 function result = skin(Y,Cb,Cr) %SKIN Summary of this function goes here % Detailed explanation goes here a=; b=; ecx=; ecy=; sita=; cx=; cy=; xishu=[cos(sita) sin(sita);-sin(sita) cos(sita)]; %如果亮度大于230,则将长短轴同时扩大为原来的倍 if(Y>230) a=*a; b=*b; end %根据公式进行计算 Cb=double(Cb); Cr=double(Cr);

t=[(Cb-cx);(Cr-cy)]; temp=xishu*t; value=(temp(1)-ecx)^2/a^2+(temp(2)-ecy)^2/b^2; %大于1则不是肤色,返回0;否则为肤色,返回1 if value>1 result=0; else result=1; end end (2)人脸的确认程序 function eye = findeye(bImage,x,y,w,h) %FINDEYE Summary of this function goes here % Detailed explanation goes here part=zeros(h,w); %二值化 for i=y:(y+h) for j=x:(x+w) if bImage(i,j)==0 part(i-y+1,j-x+1)=255; else part(i-y+1,j-x+1)=0; end end end [L,num]=bwlabel(part,8); %如果区域中有两个以上的矩形则认为有眼睛 if num<2 eye=0;

遗传算法的原理及MATLAB程序实现

遗传算法的原理及MATLAB程序实现 1 遗传算法的原理 1.1 遗传算法的基本思想 遗传算法(genetic algorithms,GA)是一种基于自然选择和基因遗传学原理,借鉴了生物进化优胜劣汰的自然选择机理和生物界繁衍进化的基因重组、突变的遗传机制的全局自适应概率搜索算法。 遗传算法是从一组随机产生的初始解(种群)开始,这个种群由经过基因编码的一定数量的个体组成,每个个体实际上是染色体带有特征的实体。染色体作为遗传物质的主要载体,其内部表现(即基因型)是某种基因组合,它决定了个体的外部表现。因此,从一开始就需要实现从表现型到基因型的映射,即编码工作。初始种群产生后,按照优胜劣汰的原理,逐代演化产生出越来越好的近似解。在每一代,根据问题域中个体的适应度大小选择个体,并借助于自然遗传学的遗传算子进行组合交叉和变异,产生出代表新的解集的种群。这个过程将导致种群像自然进化一样,后代种群比前代更加适应环境,末代种群中的最优个体经过解码,可以作为问题近似最优解。 计算开始时,将实际问题的变量进行编码形成染色体,随机产生一定数目的个体,即种群,并计算每个个体的适应度值,然后通过终止条件判断该初始解是否是最优解,若是则停止计算输出结果,若不是则通过遗传算子操作产生新的一代种群,回到计算群体中每个个体的适应度值的部分,然后转到终止条件判断。这一过程循环执行,直到满足优化准则,最终产生问题的最优解。图1-1给出了遗传算法的基本过程。 1.2 遗传算法的特点 1.2.1 遗传算法的优点

遗传算法具有十分强的鲁棒性,比起传统优化方法,遗传算法有如下优点: 1. 遗传算法以控制变量的编码作为运算对象。传统的优化算法往往直接利用控制变量的实际值的本身来进行优化运算,但遗传算法不是直接以控制变量的值,而是以控制变量的特定形式的编码为运算对象。这种对控制变量的编码处理方式,可以模仿自然界中生物的遗传和进化等机理,也使得我们可以方便地处理各种变量和应用遗传操作算子。 2. 遗传算法具有内在的本质并行性。它的并行性表现在两个方面,一是遗传 开始 初始化,输入原始参 数及给定参数,gen=1 染色体编码,产生初始群体 计算种群中每个个体的适应值 终止条件的判断, N gen=gen+1 选择 交叉 Y 变异 新种群 输出结果 结束 图1-1 简单遗传算法的基本过程

基于Matlab的动态规划程序实现

动态规划方法的Matlab 实现与应用 动态规划(Dynamic Programming)是求解决策过程最优化的有效数学方法,它是根据“最优决策的任何截断仍是最优的”这最优性原理,通过将多阶段决策过程转化为一系列单段决策问题,然后从最后一段状态开始逆向递推到初始状态为止的一套最优化求解方法。 1.动态规划基本组成 (1) 阶段 整个问题的解决可分为若干个阶段依次进行,描述阶段的变量称为阶段变量,记为k (2) 状态 状态表示每个阶段开始所处的自然状况或客观条件,它描述了研究问题过程的状况。各阶段状态通常用状态变量描述,用k x 表示第k 阶段状态变量,n 个阶段决策过程有n+ 1个状态。 (3) 决策 从一确定的状态作出各种选择从而演变到下一阶段某一状态,这种选择手段称为决策。描述决策的变量称为决策变量,决策变量限制的取值范围称为允许决策集合。用()k k u x 表示第k 阶段处于状态k x 时的决策变量,它是k x 的函数。用()k k D x Dk(xk)表示k x 的允许决策的集合。 (4) 策略 每个阶段的决策按顺序组成的集合称为策略。由第k 阶段的状态k x 开始到终止状态的后部子过程的策略记为{}11(),(),,()k k k k n n u x u x u x ++ 。可供选择的策略的范围称为允许策略集合,允许策略集合中达到最优效果的策略称为最优策略。从初始状态* 11()x x =出发,过程按照最优策略和状态转移方程演变所经历的状态序列{ } **** 121,,,,n n x x x x + 称为最优轨线。 (5) 状态转移方程 如果第k 个阶段状态变量为k x ,作出的决策为k u ,那么第k+ 1阶段的状态变量1k x +也被完全确定。用状态转移方程表示这种演变规律,记为1(,)k k k x T x u +=。 (6) 指标函数 指标函数是系统执行某一策略所产生结果的数量表示,是衡量策略优劣的数量指标,它定义在全过程和所有后部子过程上,用()k k f x 表示。过程在某阶段j 的阶段指标函数是衡量该阶段决策优劣数量指标,取决于状态j x 和决策j u ,用(,)j j j v x u 表示。 2.动态规划基本方程 (){} 11()min ,,(),()k k k k k k k k k k f x g v x u f x u D x ++=∈???? Matlab 实现 (dynprog.m 文件) function [p_opt,fval]=dynprog (x,DecisFun,SubObjFun,TransFun,ObjFun) % x 是状态变量,一列代表一个阶段的所有状态; % M-函数DecisFun(k,x) 由阶段k 的状态变量x 求出相应的允许决策变量; % M-函数SubObjFun(k,x,u) 是阶段指标函数, % M-函数ObjFun(v,f) 是第k 阶段至最后阶段的总指标函数 % M-函数TransFun(k,x,u) 是状态转移函数, 其中x 是阶段k 的某状态变量, u 是相应的决策变量; %输出 p_opt 由4列构成,p_opt=[序号组;最优策略组;最优轨线组;指标函数值组]; %输出 fval 是一个列向量,各元素分别表示p_opt 各最优策略组对应始端状态x 的最优函数值。

Copula理论及MATLAB应用实例

%-------------------------------------------------------------------------- % Copula理论及应用实例 %-------------------------------------------------------------------------- %******************************读取数据************************************* % 从文件hushi.xls中读取数据 hushi = xlsread('hushi.xls'); % 提取矩阵hushi的第5列数据,即沪市的日收益率数据 X = hushi(:,5); % 从文件shenshi.xls中读取数据 shenshi = xlsread('shenshi.xls'); % 提取矩阵shenshi的第5列数据,即深市的日收益率数据 Y = shenshi(:,5); %****************************绘制频率直方图********************************* % 调用ecdf函数和ecdfhist函数绘制沪、深两市日收益率的频率直方图 [fx, xc] = ecdf(X); figure; ecdfhist(fx, xc, 30); xlabel('沪市日收益率'); % 为X轴加标签 ylabel('f(x)'); % 为Y轴加标签 [fy, yc] = ecdf(Y); figure; ecdfhist(fy, yc, 30); xlabel('深市日收益率'); % 为X轴加标签 ylabel('f(y)'); % 为Y轴加标签 %****************************计算偏度和峰度********************************* % 计算X和Y的偏度 xs = skewness(X) ys = skewness(Y) % 计算X和Y的峰度 kx = kurtosis(X) ky = kurtosis(Y) %******************************正态性检验*********************************** % 分别调用jbtest、kstest和lillietest函数对X进行正态性检验 [h,p] = jbtest(X) % Jarque-Bera检验 [h,p] = kstest(X,[X,normcdf(X,mean(X),std(X))]) % Kolmogorov-Smirnov检验 [h, p] = lillietest(X) % Lilliefors检验

如何编写MATLAB程序才能实现对

关闭文件用fclose函数,调用格式为:sta=fclose(fid)说明:该函数关闭fid所表示的文件。其调用格式为:[A,COUNT]=fscanf(fid,format,size)说明:其中A用来存放读取的数据,COUNT返回所读取的数据元素个数,fid为文件句柄,format用来控制读取的数据格式,由%加上格式符组成,常见的格式符有:d(整型)、f(浮点型)、s(字符串型)、c(字符型)等,在%与格式符之间还可以插入附加格式说明符,如数据宽度说明等。 matlab fprintf.数据的格式化输出:fprintf(fid, format, variables)fprintf(fid,format,A)说明:fid为文件句柄,指定要写入数据的文件,format是用来控制所写数据格式的格式符,与fscanf函数相同,A是用来存放数据的矩阵。>> fid=fopen(""d:\char1.txt"",""w"");>> fid1=fopen(""d:\char1.txt"",""rt"");matlab读txt文件fid=fopen(""fx.txt"",""r"");%得到文件号[f,count]=fscanf(fid,""%f %f"",[12,90]);%把文件号1的数据读到f中。 matlab函数fgetl和fgets:按行读取格式文本函数Matlab提供了两个函数fgetl和fgets来从格式文本文件读取行,并存储到字符串向量中。这两个函数集几乎相同;不同之处是,fgets拷贝新行字符到字符向量,而fgetl则不。下面的M-file函数说明了fgetl的一个可能用法。此函数使用fgetl一次读取一整行。while f eof(fid) == 0 tline = fgetl(fid); %用Fourier变换求取信号的功率谱---周期图法 clf; Fs=1000; N=256;Nfft=256;%数据的长度和FFT所用的数据长度 n=0:N-1;t=n/Fs;%采用的时间序列 xn=sin(2*pi*50*t)+2*sin(2*pi*120*t)+randn(1,N); Pxx=10*log10(abs(fft(xn,Nfft).^2)/N);%Fourier振幅谱平方的平均值,并转化为dB f=(0:length(Pxx)-1)*Fs/length(Pxx);%给出频率序列 subplot(2,1,1),plot(f,Pxx);%绘制功率谱曲线 xlabel('频率/Hz');ylabel('功率谱/dB'); title('周期图N=256');grid on; Fs=1000; N=1024;Nfft=1024;%数据的长度和FFT所用的数据长度 n=0:N-1;t=n/Fs;%采用的时间序列 xn=sin(2*pi*50*t)+2*sin(2*pi*120*t)+randn(1,N); Pxx=10*log10(abs(fft(xn,Nfft).^2)/N);%Fourier振幅谱平方的平均值,并转化为dB f=(0:length(Pxx)-1)*Fs/length(Pxx);%给出频率序列 subplot(2,1,2),plot(f,Pxx);%绘制功率谱曲线 xlabel('频率/Hz');ylabel('功率谱/dB'); title('周期图N=256');grid on; %用Fourier变换求取信号的功率谱---分段周期图法 %思想:把信号分为重叠或不重叠的小段,对每小段信号序列进行功率谱估计,然后取平均值作为整个序列的功率谱 clf;

MATLAB-智能算法30个案例分析-终极版(带目录)

MATLAB 智能算法30个案例分析(终极版) 1 基于遗传算法的TSP算法(王辉) 2 基于遗传算法和非线性规划的函数寻优算法(史峰) 3 基于遗传算法的BP神经网络优化算法(王辉) 4 设菲尔德大学的MATLAB遗传算法工具箱(王辉) 5 基于遗传算法的LQR控制优化算法(胡斐) 6 遗传算法工具箱详解及应用(胡斐) 7 多种群遗传算法的函数优化算法(王辉) 8 基于量子遗传算法的函数寻优算法(王辉) 9 多目标Pareto最优解搜索算法(胡斐) 10 基于多目标Pareto的二维背包搜索算法(史峰) 11 基于免疫算法的柔性车间调度算法(史峰) 12 基于免疫算法的运输中心规划算法(史峰) 13 基于粒子群算法的函数寻优算法(史峰) 14 基于粒子群算法的PID控制优化算法(史峰) 15 基于混合粒子群算法的TSP寻优算法(史峰) 16 基于动态粒子群算法的动态环境寻优算法(史峰) 17 粒子群算法工具箱(史峰) 18 基于鱼群算法的函数寻优算法(王辉) 19 基于模拟退火算法的TSP算法(王辉) 20 基于遗传模拟退火算法的聚类算法(王辉) 21 基于模拟退火算法的HEV能量管理策略参数优化(胡斐)

22 蚁群算法的优化计算——旅行商问题(TSP)优化(郁磊) 23 基于蚁群算法的二维路径规划算法(史峰) 24 基于蚁群算法的三维路径规划算法(史峰) 25 有导师学习神经网络的回归拟合——基于近红外光谱的汽油辛烷值预测(郁磊) 26 有导师学习神经网络的分类——鸢尾花种类识别(郁磊) 27 无导师学习神经网络的分类——矿井突水水源判别(郁磊) 28 支持向量机的分类——基于乳腺组织电阻抗特性的乳腺癌诊断(郁磊) 29 支持向量机的回归拟合——混凝土抗压强度预测(郁磊) 30 极限学习机的回归拟合及分类——对比实验研究(郁磊) 智能算法是我们在学习中经常遇到的算法,主要包括遗传算法,免疫算法,粒子群算法,神经网络等,智能算法对于很多人来说,既爱又恨,爱是因为熟练的掌握几种智能算法,能够很方便的解决我们的论坛问题,恨是因为智能算法感觉比较“玄乎”,很难理解,更难用它来解决问题。 因此,我们组织了王辉,史峰,郁磊,胡斐四名高手共同写作MATLAB智能算法,该书包含了遗传算法,免疫算法,粒子群算法,鱼群算法,多目标pareto算法,模拟退火算法,蚁群算法,神经网络,SVM等,本书最大的特点在于以案例为导向,每个案例针对一

Matlab经典案例

M a t l a b经典案例-CAL-FENGHAI-(2020YEAR-YICAI)_JINGBIAN

1、三维曲线 >> t=0:pi/50:10*pi; >> plot3(sin(2*t),cos(2*t),t) >> axis square >> grid on 2、一窗口多图形 >> t=-2*pi::2*pi; >> subplot(3,2,1) >> plot(t,sin(t)) >> subplot(3,2,2) >> plot(t,cos(t)) >> subplot(3,2,3) >> plot(t,tan(t)) >> axis([-pi pi - 100 100]) >> subplot(3,2,4) >> plot(t,cot(t)) >> axis([-pi pi - 100 100]) >> subplot(3,2,5) >> plot(t,atan(t)) >> subplot(3,2,6) >> plot(t,acot(t)) 3、图形样式、标注、题字 (也可以利用菜单直接Insert) >> x=0:pi/20:2*pi; >> plot(x,sin(x),'b-.') >> hold on

>> plot(x,cos(x),'r--') >> hold on >> plot(x,sin(x)-1,'g:') >> hold on >> plot(x,cos(x)-1) >> xlabel('x'); >> xlabel('x轴'); >> ylabel('y轴'); >> title('图形样式、标注等'); >> text(pi,sin(pi),'x=\pi'); >> legend('sin(x)','cos(x)','sin(x)-1','cos(x)-1'); >> [x1,y1]=ginput(1) %利用鼠标定位查找线上某点的值x1 = y1 = >> gtext('x=') %鼠标定位放置所需的值在线上 4、 >> fplot('[sin(x),cos(x),sqrt(x)-1]',[0 2*pi]) M文件: 内容如下: function y=myfun(x) y(:,1)=sin(x); y(:,2)=cos(x); y(:,3)=x^(1/2)-1; 再运行:>> fplot('myfun',[0 2*pi]) 同样可以得到右图 5、 >> [x,y]=fplot('sin',[0 2*pi]); >> [x1,y1]=fplot('cos',[0 2*pi]); >> plot(x,y,'-r',x1,y1,'') >> legend('y=sinx','y=cosx')

(整理)Matlab优化工具箱基本用法.

Matlab 优化工具箱 x = bintprog(f, A, b, Aeq, Beq, x0, options) 0-1规划

用MATLAB 优化工具箱解线性规划 命令:x=linprog (c ,A ,b ) 2、模型: beq AeqX b AX ..min =≤=t s cX z 命令:x=linprog (c ,A ,b ,Aeq,beq ) 注意:若没有不等式:b AX ≤存在,则令A=[ ],b=[ ]. 若没有等式约束, 则令Aeq=[ ], beq=[ ]. 3、模型: VUB X VLB beq AeqX b AX ..min ≤≤=≤=t s cX z 命令:[1] x=linprog (c ,A ,b ,Aeq,beq, VLB ,VUB ) [2] x=linprog (c ,A ,b ,Aeq,beq, VLB ,VUB, X0) 注意:[1] 若没有等式约束, 则令Aeq=[ ], beq=[ ]. [2]其中X0表示初始点 4、命令:[x,fval]=linprog(…) 返回最优解x及x处的目标函数值fval. 例1 max 6543216.064.072.032.028.04.0x x x x x x z +++++= 85003.003.003.001.001.001.0. .654321≤+++++x x x x x x t s 70005.002.041≤+x x 10005.002.052≤+x x 90008.003.063≤+x x 6,2,10 =≥j x j 解 编写M 文件小xxgh1.m 如下: c=[-0.4 -0.28 -0.32 -0.72 -0.64 -0.6]; A=[0.01 0.01 0.01 0.03 0.03 0.03;0.02 0 0 0.05 0 0;0 0.02 0 0 0.05 0;0 0 0.03 0 0 0.08]; b=[850;700;100;900]; Aeq=[]; beq=[]; vlb=[0;0;0;0;0;0]; vub=[]; [x,fval]=linprog(c,A,b,Aeq,beq,vlb,vub) min z=cX b AX t s ≤..1、模型:

MATLAB统计分析与应用:40个案例分析

MATLAB统计分析与应用:40个案例分析 ISBN:9787512400849 分类号:C819 /115 出版社:北京航空航天大学出版社 【内容简介】 本书从实际应用的角度出发,以大量的案例详细介绍了MA TLAB环境下的统计分析与应用。 本书主要内容包括:利用MA TLAB制作统计报告或报表;从文件中读取数据到MA TLAB;从MA TLAB中导出数据到文件;数据的平滑处理、标准化变换和极差归一化变换;生成一元和多元分布随机数;蒙特卡洛方法;参数估计与假设检验;Copula理论及应用实例;方差分析;基于回归分析的数据拟合;聚类分析;判别分析;主成分分析;因子分析;图像处理中的统计应用等。 本书可以作为高等院校本科生、研究生的统计学相关课程的教材或教学参考书,也可作为从事数据分析与数据管理的研究人员的参考用书。 【目录】 第1章利用MA TLAB生成Word和Excel文档 1.1 组件对象模型(COM) 1.1.1 什么是CoM 1.1.2 CoM接口 1.2 MA TLAB中的ActiveX控件接口技术 1.2.1 actxcontrol函数 1.2.2 actxcontrollist函数 1.2.3 actxcontrolselect函数 1.2.4 actxserver函数 1.2.5 利用MA TLAB调用COM对象 1.2.6 调用actxserver函数创建组件服务器 1.3 案例1:利用MA TLAB生成Word文档 1.3.1 调用actxserver函数创建Microsoft Word服务器 1.3.2 建立Word文本文档 1.3.3 插入表格 1.3.4 插入图片 1.3.5 保存文档 1.3.6 完整代码 1.4 案例2:利用MA TLAB生成Excel文档 1.4.1 调用actxserver函数创建Microsoft Excel服务器 1.4.2 新建Excel工作簿 1.4.3 获取工作表对象句柄 1.4.4 插入、复制、删除、移动和重命名工作表 1.4.5 页面设置 1.4.6 选取工作表区域 1.4.7 设置行高和列宽 1.4.8 合并单元格 1.4.9 边框设置 1.4.10 设置单元格对齐方式

MATLAB程序设计

实验四 第3章 MATLAB 程序设计 Matlab 作为一种广泛应用于科学计算的工具软件,不仅具有强大的数值计算能力和丰富的绘图功能;可以人机交互式的命令行的方式工作;作为一种高级语言,同时也可以与 C 、FORTRAN 等高级语言一样进行程序设计. 利用 Matlab 的程序控制功能,将相关 Matlab 命令编成程序存储在一个文件中(M 文件),然后在命令窗口中运行该文件,Matlab 就会自动依次执行文件中的命令,直到全部命令执行完毕. ■ 例1 用 mesh 绘制半径为 3 的球 命令行方式: 编程方式: 新建一个M 文件 qiu.m 如下: 保存后,在命令窗口输入 qiu ,即可执行该 M 文件. >> u=[0:pi/60:2*pi]; >> v=[0:pi/60:pi]; >> [U,V]=meshgrid(u,v); >> R=3; >> X=R*sin(V).*cos(U); >> Y=R*sin(V).*sin(U); >> Z=R*cos(V); >> mesh(X,Y,Z); >> axis equal; u=[0:pi/60:2*pi]; v=[0:pi/60:pi]; [U,V]=meshgrid(u,v); R=3; X=R*sin(V).*cos(U); Y=R*sin(V).*sin(U); Z=R*cos(V); mesh(X,Y,Z); axis equal;

第一节M 文件 一、M文件介绍 ●用Matlab 语言编写的程序称为M 文件 ●M 文件以.m 为扩展名 ●M 文件是由若干Matlab 命令组合在一起构成的,它可以完 成某些操作,也可以实现某种算法 ●文件的命名规则与变量相同!文件名应尽量与程序要表达的意 义相符合,以方便今后调用.(如例1) 二、M文件的建立、打开与保存 M文件是文本文件,可以用任何文本编辑器来建立和编辑,通常使用Matlab自带的M文件编辑器. ①新建一个M文件 ●菜单操作( Fil e→New→M-File ) ●命令操作( edit M 文件名) ●命令按钮( 快捷键) ②打开已有的M 文件 ●菜单操作( File →Open ) ●命令操作( edit M 文件名) ●命令按钮( 快捷键) ●双击M文件(在当前目录窗口) ③保存M 文件 ●菜单操作( File →Save )

(完整版)QPSK调制原理及matlab程序实现

QPSK已调信号生成 一、QPSK介绍 QPSK是英文Quadrature Phase Shift Keying 的缩写,意为正交相移键控,是一种数字调制方式。其有抗干扰性强、误码性能好、频谱利用率高等优点,广泛应用于数字微波通信系统、数字卫星通信系统、宽带接入、移动通信及有线电视系统之中。 二、实验平台和实验内容 1、实验平台 本实验是MATLAB环境中生成基本QPSK已调信号,只需要MATLAB12.0。2、实验内容 1.基带信号为周期127bits伪随机序列,信息比特速率:20kbps,载波频率: 20kHz(速率及频率参数现场可调整); 2.在MATLAB环境中编写M代码搭建QPSK调制系统模型; 3.观测基带时域波形、已调信号时域波形; 4.观测基带发射星座图; 5.观测已调信号的功率谱(优先)或频谱; 三、实现框图及其原理分析 1、原理分析及其结构 QPSK与二进制PSK一样,传输信号包含的信息都存在于相位中。载波相位取四个等间隔值之一,如л/4, 3л/4,5л/4,和7л/4。相应的E为发射信号的每个符号的能量,T为符号持续时间,载波频率f等于nc/T,nc为固定整数。每一个可能的相位值对应于一个特定的二位组。例如,可用前述的一组相位值来表示格雷码的一组二位组:10,00,01,11。 Sin(t)=2E/tcos[2]4/ + ∏i]0<=t<=T )1 - ft∏ 2( 其中,i=1,2,3,4。 2、框图

四、实验结果与分析 图一基带信号为周期为127bits的伪随机序列。

图二:已调信号时域波形 带宽为7104 Hz

MATLAB在土木工程中的应用

MATLAB在土木工程中的应用 MATLAB是由美国MathWorks公司于1984年发布的、面向科学计算、数据可视化以及交互程序设计的高级计算机语言。MA TLAB软件开发的初衷是方便地进行矩阵运算,如今的MATLAB已经把功能延伸到了科学研究和工程应用的诸多领域。在国外,MA TLAB已经成为数值分析、数理统计、系统识别、信号处理、动态仿真等领域的基本工具。同传统的土木工程计算机语言FORTRAN和C相比,MA TLAB 更具有以下几大优势: a)功能强大。除了数值计算上的绝对优势外,MA TLAB5.2以上版本中还开发了自己的符号计算功能。用户只要拥有一个MAT ,就可以方便的处理诸如矩阵运算,线性与非线性方程求解,特征值问题,统计及优化问题了。 b)语言简单。MA TLAB允许用户以数学形式的语言编写程序,比FORTRAN和C更接近计算公式的书写思维方式。它的操作和功能函数指令就是常用计算机和数学上一些简单的英文单词。 c)扩充能力强、可开发性强。MATLAB本身的函数就是以源代码形式出现,用户可以仿照其写法,创建自己的程序“库”。另外,MA TLAB可以方便的与FORTRAN 或C语言接口,充分利用现有资源。 d)编程易,效率高。MA TLAB程序文件是纯文本文件,用任何字处理文件都可以对它进行编写和修改。因此程序易调试,人机交互性强。另外,MATLAB自己也拥有视窗环境下的调试系统,程序调试简单、方便。随着科研水平的不断提高,科研领域的不断扩展,多学科并行、交叉发展已成必然,认识到MATLAB的强大功能,使得MATLAB在土木工程领域中得到充分应用,达到利用MA TLAB来快速实现科研构想和提高工作效率的效果。 1 MA TLAB在结构分析中的应用 土木工程中的结构分析主要是指结构在静力和动力荷载作用时结构内力和位移的求解问题。由于结构的复杂多变和对求解精度的严格要求,采用有限元法(finite element method)程序是常用的分析手段。有限元程序中非线性方程组的求解和解的收敛问题,是困扰许多科研人员的基本问题之一,采用FORTRAN或C不但需要很多语句,而且需要研究者有较高的计算机理论和实际操作水平,程序的编制与调试又要占用近一半的研究时间。MA TLAB的出现,可以在用简单的语句完成基本算法程序后,方程组的求解利用MA TLAB自身的命令实现,整个程序不但小巧、便于调试与操作,而且解的收敛问题易于解决。例如,经典的非线性方程组Newton解法MATLAB求解程序仅有l4行,而用C语言编写的Newton法子函数程序接近30行,而且在每个迭代步当Newton方程建立后,还要再调用其他子函数程序求解线性方程组,较MA TLAB程序要繁琐许多。再有,对图1所示的为整体坐标系中二维一次四结点单元,单元可以是任意形状的四边形。这种单元比较容易满足结构实际分析的需要,该单元在整体坐标系下(x0y坐标系)的形函数表达式非常复杂,用FORTRAN或C语言将其表达出来,是非常困难的。而用MATLAB语言就可以很容易的将其写出。如二维一次四结点单元的MA TLAB程序命令如下: clear v:sym(’[1,X,Y,X Y]’); m=sym(’【1,xl,yl,xl yl;x2,y2,x2 y2;1, x3,y3,x3 y3;1,x4,y4,x4 y4]’); mm=inv(m); d=v mm simplify(factor(d));

相关主题