常用算法的matlab的源程序.docx

上传人:b****6 文档编号:16614555 上传时间:2023-07-15 格式:DOCX 页数:43 大小:46.68KB
下载 相关 举报
常用算法的matlab的源程序.docx_第1页
第1页 / 共43页
常用算法的matlab的源程序.docx_第2页
第2页 / 共43页
常用算法的matlab的源程序.docx_第3页
第3页 / 共43页
常用算法的matlab的源程序.docx_第4页
第4页 / 共43页
常用算法的matlab的源程序.docx_第5页
第5页 / 共43页
常用算法的matlab的源程序.docx_第6页
第6页 / 共43页
常用算法的matlab的源程序.docx_第7页
第7页 / 共43页
常用算法的matlab的源程序.docx_第8页
第8页 / 共43页
常用算法的matlab的源程序.docx_第9页
第9页 / 共43页
常用算法的matlab的源程序.docx_第10页
第10页 / 共43页
常用算法的matlab的源程序.docx_第11页
第11页 / 共43页
常用算法的matlab的源程序.docx_第12页
第12页 / 共43页
常用算法的matlab的源程序.docx_第13页
第13页 / 共43页
常用算法的matlab的源程序.docx_第14页
第14页 / 共43页
常用算法的matlab的源程序.docx_第15页
第15页 / 共43页
常用算法的matlab的源程序.docx_第16页
第16页 / 共43页
常用算法的matlab的源程序.docx_第17页
第17页 / 共43页
常用算法的matlab的源程序.docx_第18页
第18页 / 共43页
常用算法的matlab的源程序.docx_第19页
第19页 / 共43页
常用算法的matlab的源程序.docx_第20页
第20页 / 共43页
亲,该文档总共43页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

常用算法的matlab的源程序.docx

《常用算法的matlab的源程序.docx》由会员分享,可在线阅读,更多相关《常用算法的matlab的源程序.docx(43页珍藏版)》请在冰点文库上搜索。

常用算法的matlab的源程序.docx

常用算法的matlab的源程序

 

参考目录:

微分方程的数值解见F盘微分方程的数值解.ppt

优化问题111优化问题matlab27.doc

优化工具箱简洁.ppt

辅助优化计算与设计.pdf

优化建模与LINDO/LINGO软件/谢金星,薛毅编著图书馆位置:

51.81/3486

01785758

2005-

南中文借书处

可借

在馆

检索文献:

题目---英语关键词和中文关键词----中文数据库---修正关键词----外文数据库

中文关键词----翻译英语关键词

外国网站搜索

######################################################

曲线拟合及拟合后相应点的值

clear

x=0:

0.1:

1;

y=[-.4471.9783.286.167.087.347.669.569.489.3011.2];

n=2;

p=polyfit(x,y,n);

xi=linspace(0,1,100);

z=polyval(p,xi);

plot(x,y,'-.ro',xi,z,':

')

xlabel('x');

ylabel('y=f(x)')

title('SecondOrderCurveFitting')

legend('points','line')%图例

######################################################

>>%plot画图的例子

>>x=0:

pi/20:

2*pi;

>>y1=x.*sin(x);

>>plot(x,y1,'-.r*')%显示每一点的用*,并用虚线连起来

>>holdon%还要在这个加其他的图

>>y2=exp(x/100).*sin(x-pi/2);

>>plot(x,y2,'g')%用实线条画图

>>plot(x,y2,'-mo')%用实线条画图

>>plot(x,y2,'-mo')

>>y3=sin(x-pi);

>>plot(x,y3,'gs')

>>title('y1=..;y2=.;y3=..;')%加标题

>>legend('y1','y2','y3')%加上图利

>>xlabel('xaxisbiaoshi....');ylabel('yaxisbiaoshi..')

>>axis([02*pi-52])%调整坐标轴

>>gridon%加上网格

%要想加上箭头可以手动

#####################################################################

1.三维立体网格图mesh

>>clear

>>x=-5:

0.01:

5;

>>y=-5:

0.01:

5;

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

>>[X,Y]=meshgrid(x,y);

>>Z=X.^2+Y.^2;

>>figure,mesh(X,Y,Z)

>>title('sanweisurface')

>>xlabel('xaxis')

>>ylabel('yaxis')

>>zlabel('zaxis')

>>axis([-55-550100])

gridon%画坐标方格

colorbar%加上彩色比照图

%%%%%%%%%%%%

其中将mesh改为meshz(后加colormap([100])axistight)和waterfall(后家colormapaxistight)分别可以得到设立一个账莫平台

其中将mesh改为meshc画立体图提取登高线contour提取登高线contour3(Z)立体的登高线

#######################################################################################

2.三维线和点

clear

t=1:

0.01:

15;

x=2*(exp(-0.2.*t).*cos(8.*t));

y=2*(exp(-0.4.*t).*cos(8.*t));

plot3(t,x,y)

%标注

>>xlabel('xaxis')

>>ylabel('yaxis')

>>zlabel('zaxis')

>>axis([-55-550100])

######################################################%灰色预测的matlab程序

%x0为原始值(输入六个原始数据)

%f为预测值得到8个数据(后两个为预测数据)精确度很高

%e为残差

function[f,e]=GM(x0)

x1=cumsum(x0);

B=zeros(5,1);

fori=1:

5

B(i)=-(x1(i)+x1(i+1))/2;

end

fori=1:

5

y(i)=x0(i+1);

end

y=y';

B=[Bones(5,1)];

au=(inv(B'*B))*B'*y;

au=au';

a=au

(1);

u=au

(2);

k=x0

(1)-u/a;

t=1:

8;

t1=-a*(t-1);t2=-a*(t-2);

f=k*(exp(t1)-exp(t2));

fori=1:

6

e(i)=100*(x0(i)-f(i))/x0(i);

end

#######################################################################

插值问题预测温度

一维

>>hours=1:

1:

12;

>>tem=[589152529313022252724];

>>inh=1:

0.1:

12;

>>intem=interp1(hours,tem,inh,'spline');

>>plot(hours,tem,'-.ro',inh,intem,'-.g*')

二维

x=1:

5;

>>y=1:

3;

>>z=[8281808284;7963616581;8484828586];

>>mesh(x,y,z)

>>inx=1:

0.2:

5;

>>iny=1:

0.2:

3;

inz=interp2(x,y,z,inx',iny,'cubic');

mesh(inx,iny,inz)

散点插值

具体格式见插值.ppt

 

gtext('string')当光标位于一个图形窗口内时,等待用户单击鼠标或键盘。

若按下鼠标或键盘,则在光标的位置放置给定的文字“string”

legend在图形上添加图例。

该命令对有多种图形对象类型(线条图,条形图,饼形图等)的窗口中显示一个图例

############################

stem画二维离散数据的柄形图。

该图用线条显示数据点与x轴的距离

x=linspace(0,2,10);

stem(exp(-x.^2),'fill','-.')

stem3画三维离散数据的柄形图。

该图用一线段显示数据离开xy平面的高度

[X,Y,Z]=peaks(20);

stem3(X,Y,Z,’r*')

#################

直方图

>>x=-5:

0.1:

5;

>>y=randn(1000,1);

>>hist(y,x)

#######################333

feather羽毛图

t=0:

0.1:

2*pi;

x=sin(t).*t;

feather(t,x)

############################################

pie饼形图pie3为三维饼型图

x=[1234];

explode=[1110];

pie(x,explode)

legend('s','k','d','g')

title('')

##################################333

bar条形图

1、行向量

x=[1234];bar(x)

2、矩阵

y=[123;456];bar(y,1)

3、函数条形图

x=-2.9:

0.2:

2.9;

bar(x,exp(x.*sin(x)))

barh二维水平条形图。

可以加上一切修饰

##############################################################

fill

fill3用指定的颜色填充三维多边形。

x=0:

0.1:

5;

>>y=sin(x);

>>z=sin(x).^2;

>>c=1;

>>fill3(x,y,z,c)

 

神经网络预测

closeall

clear

echoon

clc

%BP建模

%原始数据归一化

%就业人口预测4年预测一年从94年开始

m_data=[1729.551709.261674.901679.911686.71;

1709.261674.901679.911686.711688.73;

1674.901679.911686.711688.731690.00;

1679.911686.711688.731690.001697.00;

1686.711688.731690.001697.001710.50;

1688.731690.001697.001710.501726.36;

1690.001697.001710.501726.361715.62;

1697.001710.501726.361715.621700.50];

%定义网络输入p和期望输出t

pause

clc

p1=m_data(:

1:

4);

t1=m_data(:

5);

p=p1';t=t1';

[pn,minp,maxp,tn,mint,maxt]=premnmx(p,t)

%设置网络隐单元的神经元数(5~30验证后5个最好)

n=5;

%建立相应的BP网络

pause

clc

net=newff(minmax(pn),[n,1],{'tansig','purelin'},'traingdm');

inputWeights=net.IW{1,1};

inputbias=net.b{1};

layerWeights=net.IW{1,1};

layerbias=net.b{2};

pause

clc

%训练网络

net.trainParam.show=50;

net.trainParam.lr=0.05;

net.trainParam.mc=0.9;

net.trainParam.epochs=20000;

net.trainParam.goal=1e-3;

pause

clc

%调用TRAINGDM算法训练BP网络

net=train(net,pn,tn);

%对BP网络进行仿真

A=sim(net,pn);

E=A-tn;

M=sse(E)

N=mse(E)

pause

clc

p2=[1690.001697.001710.501726.36;

1697.001710.501726.361715.62;

1710.501726.361715.621700.50];

p2=p2';

p2n=tramnmx(p2,minp,maxp);

a2n=sim(net,p2n);

a2=postmnmx(a2n,mint,maxt)

随机数的产生;

R=rand(m,n)生成(0,1)上均匀分布的m行n列随机矩阵

P=randperm(n)生成1,2…,n的一个随机排列

normrnd(mu,sigma,m,n).产生m*n阶的正态分布随机数矩阵.

指数分布exprnd

泊松分布poissrnd

Matlab提供了两种除法运算:

左除(\)和右除(/)。

一般情况下,x=a\b是方程a*x=b的解,而x=b/a是方程x*a=b的解。

1]画图问题:

1对于正余玄等,其实离散的,若将t取得非常小,是连续的,如果t的间隔大,plot(t1,y1,'r.')则明显离散,plot(t1,y1,t1,y1,'r.')则就会有一条折线将离散的点连接起来了,

2、subplot(a,b,c),将图分为ab快;

gridon画坐标方格

title(‘加标题’)

xlabel('x'),ylabel('y')

axis([0,pi,-1,1])%控制轴的范围

axissquare%使坐标轴长度相同

legend('1','2','3')%图例

text(x,y,‘’)在图片上()

3、t=(0:

pi/50:

2*pi);k=0.4:

0.1:

1;y=cos(t)*k;plot(t,y)这是错误语句;

t=(0:

pi/50:

2*pi)'才对,另外关于幂的问题>Y=sin(th)*sqrt(25-a^2);

?

?

?

Errorusing==>mpowerMatrixmustbesquare.

>>Y=sin(th)*sqrt(25-a.^2);

4、对函数加包络线,如y=sin(x)[-1,1]

5]数据拟合经典

线形拟合的经典:

(详见拟合PPT)

x=0:

0.1:

1

y=[-.4471.9783.286.167.087.347.669.569.489.3011.2];

P=polyfit(x,y,2);

xi=linspace(0,1,100);

z=polyval(P,xi);

holdon

plot(x,y,'r.','MarkerSize',20);

plot(xi,z,'b','LineWidth',2),holdoff

legend('points','line')%图例

非线性拟合两例

1.

functionf=nonlinefit(x,t)

f=x

(1)+x

(2).*exp(0.02*x(3)*t);

 

t=100:

100:

1000;

y=1e-03*[4.54,4.99,5.35,5.65,5.90,6.10,6.26,6.39,6.50,6.59];

x0=[0.20.050.05];

x=lsqcurvefit('nonlinefit',x0,t,y)

f=nonlinefit(x,t)

2.

functionf=nonlinefit2(x,t)

f=300*exp(-x

(1)*t)./x

(2);

t=[0.250.511.523468];

c=[19.2118.1515.3614.1012.899.327.455.243.01];

x0=[0.010.02];

x=lsqcurvefit('nonlinefit2',x0,t,c)

f=nonlinefit2(x,t)

 

插值经典:

hours=1:

12;

temps=[589152529313022252724];

h=1:

0.1:

12;%(将时间细化,)

t=interp1(hours,temps,h,'spline');(每个细化后的时间通过插值得到的值,直接输出数据将是很多的)

plot(hours,temps,'+',h,t,hours,temps,'r:

')%作图依次将散点图,插值后的图,及散点的折线图画出

xlabel('Hour'),ylabel('DegreesCelsius’)

 

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

6、k=sym('k')%k是一个符号变量;

symsum(S)对通项S求和,其中k为变量且从0变到k-1.

symsum(S,v)对通项S求和,指定其中v为变量且v从0变到v-1.

symsum(S,a,b)对通项S求和,其中k为变量且从a变到b.

symsum(S,v,a,b)对通项S求和,指定其中v为变量且v从a变到b.

7、解微分方程:

解析解

dsolve('fangcheng1','fangcheng2'…..,'chushitiaojian','bianliang')

数值解

[自变量,函数]=ode45/ode23/ode15s(‘保存的函数名’,[自变量的范围],[函数的初始值])

高化底,

8、回归分析:

经典例制:

x=0.1:

0.01:

0.18;x=[x,0.2,0.21,0.23]';

y=[42,41.5,45,45.5,45,47.5,49,55,50,55,55.5,60.5]';

X=[ones(12,1),x];

>>polyfit(x,y,1)

[b,bint,r,rint,stats]=regress(y,X,0.05);

>>b,bint,stats,rcoplot(r,rint)

9、数组的输入:

x=linspace(a,b,n);

x=rand(1,n);//0-1之间的n的随即数

x=randperm(n);//1到n的随即整数

10、将硬盘的数据读入变量

读入txt:

a=load('shujulujing')

读入excel:

a=xlsread('shujulujing')

11、矩阵函数

eye(m,n);m*n的矩阵;

magic(n);n为方阵;

ones(m,n);

rand(m,n);是m*n的(0,1)分布随即数矩镇

randn(m,n);m*n矩阵,元素为正态分布的随即数珠;

zeros(m,n);

meshgrid(y,x)产生x-y平面的网格点数据x,y;

det计算矩镇的行列市,

eig特征值

inv逆

rank秩

trace迹

norm摸或范数

orth求出可将矩镇化为对角阵的正交化

poly矩镇的特征多项式

12、点乘与矩镇运算:

A.'A'

A.^n矩镇的每个元素自乘n方A^n矩镇自乘n方

A.^p矩镇的每个元素自求p次方A^p矩镇的p次幂

A.*BA*B

A./BA/B

B.\AB\A

13、(具体见统计工具)

统计工具箱有关命令:

1)数据的输入,保存,调用;data=[];savedata;loaddata;

2)基本统计量:

均值mean(x),

中位数median(x);

标准差std(x);

方差var(x);

偏度skewness(x);

峰度kurtosis(x);

偏度:

反映分布的对称性,〉0表示右偏态,此时数据位于均值得右边比位于左边的多,峰度:

如果

3,常见的分布函数:

常见的几种分布的命令字符为:

正态分布:

norm指数分布:

exp

帕松分布:

poiss

分布:

beta

威布尔分布:

weib

分布:

chi2

t分布:

tF分布:

F

Matlab工具箱对每一种分布都提供五类函数,其命令字符为:

概率密度:

pdf概率分布:

cdf

逆概率分布:

inv均值与方差:

stat

随机数生成:

rnd

(当需要一种分布的某一类函数时,将以上所列的分布命令字符与函数命令字符接起来,并输入自变量(可以是标量、数组或矩阵)和参数即可.)

4、

统计图形的作图

normplot()正态分布检验图;

hist(y,x)做直方图;

chi2rnd(5,1,100)产生自由度为5的1000个卡方随即数;

pie(X,explode)//X一为数组,作图时将元素求和,然后计算出每个元素的的比绿,explode:

数组X的同维数组,元素为1表示响应的突出

scatter(nd,pop,‘rs’);

scatter3(X,Y,Z)立体散点图

 MATLAB中灰度直方图的显示

MATLAB图象处理工具箱提供了imhist函数来计算和显示图象的直方图,imhist函数的语法格式为:

imhist(I,n)

imhist(X,map)

其中imhist(I,n)计算和显示灰度图象I的直方图,n为指定的灰度级数目,默认值为256。

imhist(X,map)计算和显示索引色图象X的直方图,map为调色板。

例:

I = imread('rice.tif');

imshow(I)

figure, imhist(I)

5、参数估计:

1、正态总体的参数估计

设总体服从正态分布,则其点估计和区间估计可同时由以下命令获得:

[muhat,sigmahat,muci,sigmaci]=normfit(X,alpha)

此命令在显著性水平alpha下估计数据X的参数(alpha缺省时设定为0.05),返回值muhat是X的均值的点估计值,sigmahat是标准差的点估计值,muci是均值的区间估计,sigmaci是标准差的区间估计.

(1)[muhat,muci]=expfit(X,alpha)-----在显著性水平alpha下,求指数分布的数据X的均值的点估计及其区间估计.

(2)[lambdahat,lambdaci]=poissfit(X,alpha)-----在显著性水平alpha下,求泊松分布的数据X的参数的点估计及其区间估计.

(3)[phat,pci]=weibfit(X,alpha)-----在显著性水平alpha下,求Weibull分布的数据X的参数的点估计及其区间估计.

6、假设检验:

在总体服从正态分布的情况下,可用以下命令进行假设检验、

总体方差sigma2已知时,总体均值的检验使用z-检验

[h,sig,ci]=ztest(x,m,sigma,alpha,tail)

检验数据x的关于均值的某一假设是否成立,其中sigma为已知方差,alpha为显著性水平,究竟检验什么假设取决于tail的取值:

tail=0,检验假设“x的均值等于m”

tail=1,检验假设“x的均值大于m”

tail=-1,检验假设“x的均值小于m”

tail的缺省值为0,alpha的缺省值为0.05.

返回值h为一个布尔值,h=1表示可以拒绝假设,h=0表示不可以拒绝假设,sig为假设成立的概率,ci为均值的1-alpha置信区间.

总体方差sigma2未知时,总体均值的检验使用t-检验

两总体均值的假设检验使用t-检验

非参数检验:

总体分布的检验

7、Matlab工具箱提供了两个对总体分布进行检验的命令:

1)h=normplot(x)

此命令显示数据矩阵x的正态概率图.如果数据来自于正态分布,则图形显示出直线性形态.而其它概率分布函数显

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2