Matlab一些函数的补充说明.docx

上传人:b****1 文档编号:2314652 上传时间:2023-05-03 格式:DOCX 页数:14 大小:89.43KB
下载 相关 举报
Matlab一些函数的补充说明.docx_第1页
第1页 / 共14页
Matlab一些函数的补充说明.docx_第2页
第2页 / 共14页
Matlab一些函数的补充说明.docx_第3页
第3页 / 共14页
Matlab一些函数的补充说明.docx_第4页
第4页 / 共14页
Matlab一些函数的补充说明.docx_第5页
第5页 / 共14页
Matlab一些函数的补充说明.docx_第6页
第6页 / 共14页
Matlab一些函数的补充说明.docx_第7页
第7页 / 共14页
Matlab一些函数的补充说明.docx_第8页
第8页 / 共14页
Matlab一些函数的补充说明.docx_第9页
第9页 / 共14页
Matlab一些函数的补充说明.docx_第10页
第10页 / 共14页
Matlab一些函数的补充说明.docx_第11页
第11页 / 共14页
Matlab一些函数的补充说明.docx_第12页
第12页 / 共14页
Matlab一些函数的补充说明.docx_第13页
第13页 / 共14页
Matlab一些函数的补充说明.docx_第14页
第14页 / 共14页
亲,该文档总共14页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

Matlab一些函数的补充说明.docx

《Matlab一些函数的补充说明.docx》由会员分享,可在线阅读,更多相关《Matlab一些函数的补充说明.docx(14页珍藏版)》请在冰点文库上搜索。

Matlab一些函数的补充说明.docx

Matlab一些函数的补充说明

meshgrid的使用方法:

[X,Y]=meshgrid(x,y)将向量x和y定义的区域转换成矩阵X和Y,这两个矩阵可以用来表示mesh和surf的三维空间点以及两个变量的赋值。

其中矩阵X的行向量是向量x的简单复制,而矩阵Y的列向量是向量y的简单复制。

详细解释:

helpmeshgrid

meshgrid用于从数组a和b产生网格。

生成的网格矩阵A和B大小是相同的。

它也可以是更高维的。

[A,B]=Meshgrid(a,b)

生成size(b)Xsize(a)大小的矩阵A和B。

它相当于a从一行重复增加到size(b)行,把b转置成一列再重复增加到size(a)列。

因此命令等效于:

A=ones(size(b))*a;

B=b'*ones(size(a))

 

如下所示:

>>a=[1:

2]

a=

12

>>b=[3:

5]

b=

345

>>[A,B]=meshgrid(a,b)

A=

12

12

12

 

B=

33

44

55

>>[B,A]=meshgrid(b,a)

B=

345

345

 

A=

111

222

 

不是在mesh前面必须使用的

 

首先矩阵的乘法、除法(有左除和右除之分)和数字的乘法、除法是有区别的。

对于数字来说 a*x=b  或者 x*a=b  都是一样的  最后都是 x=b/a

对于矩阵来说 a*x=b  或者 x*a=b  是不一样的  

对于前者  x=inv(a)*b  对于后者  x=b*inv(a)

而且这个是对于a x b都是N阶方阵来说的,如果不是方正的话那么就要求  广义逆  了

也就是   x=pinv(a)*b  对于后者  x=b*pinv(a)

即便对于再强大的数值软件,在求取矩阵逆这个问题上也是有误差的,所以很难指望像数字那样算的很精确了

以下是具体的分析过程,后面会介绍到方阵计算时,基本误差可以忽略

>> x=rand(10,6)

x =

    0.0759    0.1622    0.4505    0.1067    0.4314    0.8530

    0.0540    0.7943    0.0838    0.9619    0.9106    0.6221

    0.5308    0.3112    0.2290    0.0046    0.1818    0.3510

    0.7792    0.5285    0.9133    0.7749    0.2638    0.5132

    0.9340    0.1656    0.1524    0.8173    0.1455    0.4018

    0.1299    0.6020    0.8258    0.8687    0.1361    0.0760

    0.5688    0.2630    0.5383    0.0844    0.8693    0.2399

    0.4694    0.6541    0.9961    0.3998    0.5797    0.1233

    0.0119    0.6892    0.0782    0.2599    0.5499    0.1839

    0.3371    0.7482    0.4427    0.8001    0.1450    0.2400

>> a=rand(6,5)

a =

    0.4173    0.3377    0.2417    0.5752    0.0430

    0.0497    0.9001    0.4039    0.0598    0.1690

    0.9027    0.3692    0.0965    0.2348    0.6491

 0.2404    0.9954         0    1.7078   -0.0947    0.0767

    0.6409    0.5194         0    0.6314    0.7188    0.2404

    0.6027    1.1286         0    1.4119    0.3013    0.1243

    0.0224    0.7265         0    0.3393    0.5280    0.1840

    0.3964    0.9590         0    1.2499    0.0212    0.2404

>> x2=y*pinv(a)

x2 =

    0.0971    0.2379    0.2915    0.2682    0.3870    0.8532

   -0.0043    0.5869    0.5191    0.5196    1.0323    0.6216

    0.5339    0.3224    0.2054    0.0286    0.1753    0.3510

    0.7703    0.4968    0.9799    0.7073    0.2824    0.5132

    0.8862   -0.0046    0.5097    0.4542    0.2454    0.4015

    0.1116    0.5366    0.9630    0.7293    0.1744    0.0758

    0.5969    0.3629    0.3287    0.2975    0.8107    0.2401

    0.4908    0.7304    0.8359    0.5626    0.5349    0.1235

   -0.0087    0.6159    0.2320    0.1036    0.5928    0.1838

    0.2956    0.6002    0.7532    0.4845    0.2318    0.2397

>> norm(x-x2)

ans =

1.1443误差较大,主要是因为计算广义逆引入较大误差

下面是用一个5阶方阵计算结果,这下就对了

x=rand(5)

x =

    0.5470    0.1835    0.9294    0.3063    0.6443

    0.2963    0.3685    0.7757    0.5085    0.3786

    0.7447    0.6256    0.4868    0.5108    0.8116

    0.1890    0.7802    0.4359    0.8176    0.5328

    0.6868    0.0811    0.4468    0.7948    0.3507

>> a=rand(5)

a =

    0.9390    0.2077    0.1948    0.3111    0.9797

    0.8759    0.3012    0.2259    0.9234    0.4389

    0.5502    0.4709    0.1707    0.4302    0.1111

    0.6225    0.2305    0.2277    0.1848    0.2581

    0.5870    0.8443    0.4357    0.9049    0.4087

>> y=x*a

y =

    1.7546    1.2212    0.6571    1.3791    1.0621

    1.5666    0.9747    0.5541    1.2027    0.8242

    2.3095    1.3754    0.8394    1.8476    1.5218

    1.9224    1.1179    0.7058    1.6000    1.0048

    1.6624    0.8568    0.5621    0.9450    1.1066

>> x1=y*inv(a)

x1 =

    0.5470    0.1835    0.9294    0.3063    0.6443

    0.2963    0.3685    0.7757    0.5085    0.3786

    0.7447    0.6256    0.4868    0.5108    0.8116

    0.1890    0.7802    0.4359    0.8176    0.5328

    0.6868    0.0811    0.4468    0.7948    0.3507

>> norm(x1-x)

ans =

  3.1081e-015误差很小了

x2=y/a (与x2=y*inv(a)等价)

x2 =

    0.5470    0.1835    0.9294    0.3063    0.6443

    0.2963    0.3685    0.7757    0.5085    0.3786

    0.7447    0.6256    0.4868    0.5108    0.8116

    0.1890    0.7802    0.4359    0.8176    0.5328

    0.6868    0.0811    0.4468    0.7948    0.3507

>> norm(x2-x)

ans =

  1.7692e-015误差很小了

 

MATLAB程式设计与应用

3.基本XYZ立体绘图命令

在科学目视表示(Scientificvisualization)中,三度空间的立体图是一个非常重要的技巧。

本章将介绍MATLAB基本XYZ三度空间的各项绘图命令。

mesh和plot是三度空间立体绘图的基本命令,mesh可画出立体网状图,plot则可画出立体曲面图,两者产生的图形都会依高度而有不同颜色。

下列命令可画出由函数

形成的立体网状图:

x=linspace(-2,2,25);%在x轴上取25点

y=linspace(-2,2,25);%在y轴上取25点

[xx,yy]=meshgrid(x,y);%xx和yy都是21x21的矩阵

zz=xx.*exp(-xx.^2-yy.^2);%计算函数值,zz也是21x21的矩阵

mesh(xx,yy,zz);%画出立体网状图

surf和mesh的用法类似:

x=linspace(-2,2,25);%在x轴上取25点

y=linspace(-2,2,25);%在y轴上取25点

[xx,yy]=meshgrid(x,y);%xx和yy都是21x21的矩阵

zz=xx.*exp(-xx.^2-yy.^2);%计算函数值,zz也是21x21的矩阵

surf(xx,yy,zz);%画出立体曲面图

为了方便测试立体绘图,MATLAB提供了一个peaks函数,可产生一个凹凸有致的曲面,包含了三个局部极大点及三个局部极小点,其方程式为:

要画出此函数的最快方法即是直接键入peaks:

peaks

z=3*(1-x).^2.*exp(-(x.^2)-(y+1).^2)...

-10*(x/5-x.^3-y.^5).*exp(-x.^2-y.^2)...

-1/3*exp(-(x+1).^2-y.^2)

我们亦可对peaks函数取点,再以各种不同方法进行绘图。

meshz可将曲面加上围裙:

[x,y,z]=peaks;

meshz(x,y,z);

axis([-infinf-infinf-infinf]);

waterfall可在x方向或y方向产生水流效果:

[x,y,z]=peaks;

waterfall(x,y,z);

axis([-infinf-infinf-infinf]);

下列命令产生在y方向的水流效果:

[x,y,z]=peaks;

waterfall(x',y',z');

axis([-infinf-infinf-infinf]);

meshc同时画出网状图与等高线:

[x,y,z]=peaks;

meshc(x,y,z);

axis([-infinf-infinf-infinf]);

surfc同时画出曲面图与等高线:

[x,y,z]=peaks;

surfc(x,y,z);

axis([-infinf-infinf-infinf]);

contour3画出曲面在三度空间中的等高线:

contour3(peaks,20);

axis([-infinf-infinf-infinf]);

contour画出曲面等高线在XY平面的投影:

contour(peaks,20);

plot3可画出三度空间中的曲线:

t=linspace(0,20*pi,501);

plot3(t.*sin(t),t.*cos(t),t);

亦可同时画出两条三度空间中的曲线:

t=linspace(0,10*pi,501);

plot3(t.*sin(t),t.*cos(t),t,t.*sin(t),t.*cos(t),-t);

 

MATLAB提供了一个peaks函数,可产生一个凹凸有致的曲面,包含了三个局部极大点及三个局部极小点

 

typepeaks

function[xz,y,z]=peaks(arg1,arg2)

%PEAKSAsamplefunctionoftwovariables.

%PEAKSisafunctionoftwovariables,obtainedbytranslatingand

%scalingGaussiandistributions,whichisusefulfordemonstrating

%MESH,SURF,PCOLOR,CONTOUR,etc.

%Thereareseveralvariantsofthecallingsequence:

%

%Z=PEAKS;

%Z=PEAKS(N);

%Z=PEAKS(V);

%Z=PEAKS(X,Y);

%

%PEAKS;

%PEAKS(N);

%PEAKS(V);

%PEAKS(X,Y);

%

%[X,Y,Z]=PEAKS;

%[X,Y,Z]=PEAKS(N);

%[X,Y,Z]=PEAKS(V);

%

%Thefirstvariantproducesa49-by-49matrix.

%ThesecondvariantproducesanN-by-Nmatrix.

%ThethirdvariantproducesanN-by-NmatrixwhereN=length(V).

%ThefourthvariantevaluatesthefunctionatthegivenXandY,

%whichmustbethesamesize.TheresultingZisalsothatsize.

%

%Thenextfourvariants,withnooutputarguments,doaSURF

%plotoftheresult.

%

%Thelastthreevariantsalsoproducetwomatrices,XandY,for

%useincommandssuchasPCOLOR(X,Y,Z)orSURF(X,Y,Z,DEL2(Z)).

%

%Ifnotgivenasinput,theunderlyingmatricesXandYare

%[X,Y]=MESHGRID(V,V)

%whereVisagivenvector,orVisavectoroflengthNwith

%elementsequallyspacedfrom-3to3.Ifnoinputargumentis

%given,thedefaultNis49.

%CBM,2-1-92,8-11-92,4-30-94.

%Copyright1984-2006TheMathWorks,Inc.

%$Revision:

5.10.4.3$$Date:

2006/06/2723:

02:

56$

ifnargin==0

dx=1/8;

[x,y]=meshgrid(-3:

dx:

3);

elseifnargin==1

iflength(arg1)==1

[x,y]=meshgrid(linspace(-3,3,arg1));

else

[x,y]=meshgrid(arg1,arg1);

end

else

x=arg1;y=arg2;

end

z=3*(1-x).^2.*exp(-(x.^2)-(y+1).^2)...

-10*(x/5-x.^3-y.^5).*exp(-x.^2-y.^2)...

-1/3*exp(-(x+1).^2-y.^2);

ifnargout>1

xz=x;

elseifnargout==1

xz=z;

else

%Selfdemonstration

disp('')

disp('z=3*(1-x).^2.*exp(-(x.^2)-(y+1).^2)...')

disp('-10*(x/5-x.^3-y.^5).*exp(-x.^2-y.^2)...')

disp('-1/3*exp(-(x+1).^2-y.^2)')

disp('')

surf(x,y,z)

axis('tight')

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

end

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

当前位置:首页 > 工程科技 > 能源化工

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

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