matlab在气象上的应用_第1页
matlab在气象上的应用_第2页
matlab在气象上的应用_第3页
matlab在气象上的应用_第4页
matlab在气象上的应用_第5页
已阅读5页,还剩64页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、在大气科学中的应用在大气科学中的应用一、一、Matlab界面简介以及一些重要指令和注意事项界面简介以及一些重要指令和注意事项二、数据处理二、数据处理plot相关命令绘图 contour(f)命令绘图 不同投影方式绘图 其他txt 数据Excel 数据(.xls)二进制数据NetCDF、hdf和Grib格式数据其他主要内容主要内容三、图形绘制三、图形绘制n 当当MATLAB 程序启动时,一个叫做程序启动时,一个叫做MATLAB 桌面的窗口出现了。默桌面的窗口出现了。默认的认的MATLAB桌面结构如图桌面结构如图1.1 所示。在所示。在MATLAB 集成开发环境下,集成开发环境下,它集成了管理文件

2、、变量和应用程序的许多编程工具。它集成了管理文件、变量和应用程序的许多编程工具。n 在在MATLAB 桌面上可以得到和访问的窗口主要有:桌面上可以得到和访问的窗口主要有:n 命令窗口(命令窗口(The Command Window)n 命令历史窗口(命令历史窗口(The Command History Window)n 启动平台(启动平台(Launch Pad)n 编辑调试窗口(编辑调试窗口(The Edit/Debug Window)n 工作台窗口和数组编辑器(工作台窗口和数组编辑器(Workspace Browser and Array Editor)n 帮助空间窗口(帮助空间窗口(Hel

3、p Browser)n 当前路径窗口(当前路径窗口(Current Directory Browser)一、一、Matlab界面简介界面简介一些重要的命令n 在任何时侯你都可以用在任何时侯你都可以用clc 命令清空命令窗口命令清空命令窗口(The Command Windows)中的内容中的内容;n 可以用可以用clf清空当前图象窗口中的内容。清空当前图象窗口中的内容。n 在工作空间窗口(在工作空间窗口(The workspace browser)中变量可用)中变量可用clear命令命令清除。清除。n 正如我们看到的,工作空间窗口(正如我们看到的,工作空间窗口(The workspace br

4、owser)中的)中的变量在独立的命令和变量在独立的命令和M 文件间执行时,可能会出现第一个问题中的变文件间执行时,可能会出现第一个问题中的变量存留在工作区而影响到第二个问题的解决。为了避免这种情况的发量存留在工作区而影响到第二个问题的解决。为了避免这种情况的发生,在新的计算开始之前,应当有生,在新的计算开始之前,应当有clear 命令清空工作区。命令清空工作区。变量名的命名n MATLAB 的变量名的变量名必须以字母开头必须以字母开头,后面可以跟字母,数字和下划,后面可以跟字母,数字和下划线(线(_).只有前只有前31个字符是有效的;个字符是有效的;n 如果超过了如果超过了31 个字符,基余

5、的字符将被忽略。如果声明两个变量,个字符,基余的字符将被忽略。如果声明两个变量,两变量名只有第两变量名只有第32 个字符不同,那么个字符不同,那么MATLAB 将它们当作同一变量将它们当作同一变量对待。对待。n 在在MATLAB 语言中是语言中是区分字母大小的区分字母大小的,也就是说,大写字母和小写,也就是说,大写字母和小写字母代表的东西是不同的。字母代表的东西是不同的。数组n 表表2.1 用于创始化变量的用于创始化变量的MATLAB 函数函数n 函数函数 作用作用n zeros(n) 创建一个创建一个nn 零矩阵零矩阵n zeros(n,m) 创建一个创建一个nm 零矩阵零矩阵n zeros

6、(size(arr) 创建一个与数组创建一个与数组arr 的零矩阵的零矩阵n ones(n) 创建一个创建一个nn 元素全为元素全为1 矩阵矩阵n ones(n,m) 创建一个创建一个nm 元素全为元素全为1 矩阵矩阵n eye(n) 创建一个创建一个nn 的单位矩阵的单位矩阵n eye(n,m) 创建一个创建一个nm 的单位矩阵的单位矩阵n length(arr) 返回一个向量的长度或二维数组中返回一个向量的长度或二维数组中 最长的那一维的长度最长的那一维的长度n size(arr) 返回指定数组的行数和列数返回指定数组的行数和列数数组的运算MATLAB 数据导入与导出n 可以读取的文件类型

7、:可以读取的文件类型:n 文本文件、文本文件、word 文件、文件、xml 文件、文件、xls 文件、图文件、图像文件和音视频文件等像文件和音视频文件等有三种方式读取数据有三种方式读取数据1、直接导入(、直接导入(importdata)2、命令窗口、命令窗口3、file操作操作二、数据处理数数据据处处理理txt 数据Excel 数据(.xls)二进制数据7. 基本的读写NetCDF, Grib 和hdf格式数据1. 矩阵型数据的读写2. 带变量名的矩阵型数据的读写3. 含有时间的矩阵型数据的读写4. 混合数字与字符串数据的读写5. 基本的读写6. 含有时间格式变量的excel数据读写其他8.

8、NetCDF格式数据9. Grib格式数据10. hdf格式数据12. 矩阵操作文件操作文件操作命令窗口命令窗口函 数 名 称读取文件的扩展名数 据 格 式load.mat读取读取MATLAB下的下的MAT数据格式数据格式的数据的数据aviread.avi读取读取AVI格式的音频视频数据格式的音频视频数据cdfread.cdf读取读取CDF格式的数据格式的数据hdf.hdf读取读取HDF格式的数据格式的数据imread.bmp .cur .gif .hdf .ico.jpg .pbm .pgm .png .pnm .ppm .pcx .tif .xwd .ras读取各种格式的图形数据读取各种格

9、式的图形数据wavread.wav读取读取 Windows 系统的声音文件系统的声音文件xlsread.xls读取读取 Excel 电子表格数据电子表格数据导入函数命令窗口命令窗口函 数 名 称读取文件的扩展名数 据 格 式save.mat存写存写MATLAB下的下的MAT数据格式数据格式的数据的数据avifile.avi存写存写AVI格式的音频视频数据格式的音频视频数据cdfwrite.cdf存写存写CDF格式的数据格式的数据hdf.hdf存写存写HDF格式的数据格式的数据imwrite.bmp .cur .gif .hdf .ico.jpg .pbm .pgm .png .pnm .ppm

10、 .pcx .tif .xwd .ras存写各种格式的图形数据存写各种格式的图形数据wavwrite.wav存写存写 Windows 系统的声音文件系统的声音文件xlswrite.xls存写存写 Excel 电子表格数据电子表格数据导出函数命令窗口命令窗口文本文件(txt)的读写函 数功 能csvread读入以逗号分隔的数据读入以逗号分隔的数据csvwrite将数据写入文件,数据间以逗将数据写入文件,数据间以逗号分隔号分隔dlmread将以将以 ASCII 码分隔的数值数据码分隔的数值数据读入到矩阵中读入到矩阵中dlmwrite将矩阵数据写入到文件中,以将矩阵数据写入到文件中,以 ASCII

11、分隔分隔textscan从文本文件中读入数据,将结从文本文件中读入数据,将结果保存为单元数组果保存为单元数组textread从文本文件中读入数据,将结从文本文件中读入数据,将结果分别保存果分别保存命令窗口命令窗口 csvread、csvwrite具体调用格式n M = csvread(filename, row, col, range), 将文件将文件 filename 中的数据读入,并且保存为中的数据读入,并且保存为 M,filename 中只能包含数字,并且数中只能包含数字,并且数字之间以逗号分隔。起始行为字之间以逗号分隔。起始行为 row,起始列为,起始列为 col,读取的数据由数组,读

12、取的数据由数组 range 指定,指定,range 的格式为:的格式为:R1 C1 R2 C2,其中,其中 R1、C1 为读取区域左上角的行和列,为读取区域左上角的行和列,R2、C2 为读取区域右下角的行和列。为读取区域右下角的行和列。 n csvwrite(filename,M,row,col), 将数组将数组 M 中的数据保存为文件中的数据保存为文件 filename,数据间以逗号分隔。将数组,数据间以逗号分隔。将数组 M 中中的指定数据保存在文件中,数据由参数的指定数据保存在文件中,数据由参数 row 和和 col 指定,保存指定,保存 row 和和 col 右下角的数据。右下角的数据。

13、 注:注:csvwrite 写入数据时每一行以换行符结束。另外,该函数不返回任何值写入数据时每一行以换行符结束。另外,该函数不返回任何值。 csvwrite(H:shujueg101.txt,M); csvread & csvwrite示例n I_MATLAB= imread(H:shuju850hpa.bmp); % read in the imagen I_MATLAB= rgb2gray(I_MATLAB); % convert the image to grayn figure,imshow(I_MATLAB);n csvwrite(H:shuju850hpa.txt,I_MA

14、TLAB); % write the data into a textn sub_MATLAB= csvread(H:shuju850hpa.txt,1,500); %read in part of the datan sub_MATLAB= uint8(sub_MATLAB);n figure,imshow(sub_MATLAB); dlmread、dlmwriten dlmread 函数用于从文档中读入数据,其功能强于函数用于从文档中读入数据,其功能强于 csvread。dlmread 的调的调用格式如下:用格式如下: M = dlmread(filename, delimiter, R,

15、 C) M = dlmread(filename, delimiter, range) 其中参数其中参数 delimiter 用于指定文件中的分隔符,其他参数的意义与用于指定文件中的分隔符,其他参数的意义与 csvread函数中参数的意义相同,这里不再赘述。函数中参数的意义相同,这里不再赘述。dlmread 函数与函数与 csvread 函数的差函数的差别在于,别在于,dlmread 函数在读入数据时可以指定分隔符,不指定时默认分隔符函数在读入数据时可以指定分隔符,不指定时默认分隔符为逗号。为逗号。n dlmwrite 函数用于向文档中写入数据,其功能强于函数用于向文档中写入数据,其功能强于

16、csvwrite 函数。函数。 dlmwrite函数的调用格式为:函数的调用格式为: dlmwrite(filename, M, D, R, C),指定写入数据的起始位置。,指定写入数据的起始位置。 dlmwrite(filename, M, attribute1, value1, attribute2, value2, .),指,指定任意数目的参数,可以指定的参数见下表。定任意数目的参数,可以指定的参数见下表。 dlmwrite(filename, M, -append),如果,如果 filename 指定的文件存在,在指定的文件存在,在文件后面写入数据,不指定时则覆盖原文件。文件后面写入数

17、据,不指定时则覆盖原文件。 dlmwrite(filename, M, -append, attribute-value list),叙写文件,并,叙写文件,并指定参数。指定参数。 dlmwrite 函数的可用参数如下表函数的可用参数如下表 所示。所示。dlmwrite 函数的可用参数参参 数数 名名功功 能能delimiter用于指定分隔符用于指定分隔符newline用于指定换行符,可以选择用于指定换行符,可以选择“pc”或者或者“unix”roffset行偏差,指定文件第一行的行偏差,指定文件第一行的位置,位置,roffset 的基数为的基数为 0coffset列偏差,指定文件第一列的列偏

18、差,指定文件第一列的位置,位置,coffset 的基数为的基数为 0precision指定精确度,可以指定精确指定精确度,可以指定精确维数,或者采用维数,或者采用 c 语言的格语言的格式,如式,如“%10.5f”textread,textscann 当文件的格式已知时,可以利用当文件的格式已知时,可以利用 textread 函数和函数和 textscan 函数读入。函数读入。这里只介绍这两个函数应用的实例。这里只介绍这两个函数应用的实例。n 按照原有格式读取。按照原有格式读取。 names, types, x, y, answer = textread(J:shujueg301.txt,%s

19、%s %f %d %s,3) fid1= fopen(J:shujueg3.txt);n C = textscan(fid1,%s %s %f32 %d8 %u %f %f %s);n fclose(fid1);n C1n ans = n Sallyn YesJoen Bill eg3.txt内容:Sally Type1 12.34 45 1.23e10 inf NaN Yes Joe Type2 23.54 60 9e19 -inf 0.001 No Bill Type3 34.90 12 2e5 10 100 Noeg301.txt内容:Sally Level1 12.34 45 YesJ

20、oe Level2 23.54 60 NoBill Level3 34.90 12 No本节介绍一些基本的文件操作,这些操作如下表 所示。MATLAB 的基本文件操作函 数功 能fclose关闭文件关闭文件feof判断是否为文件结尾判断是否为文件结尾ferror文件输入输出中的错误查找文件输入输出中的错误查找fgetl读入一行,忽略换行符读入一行,忽略换行符fgets读入一行,直到换行符读入一行,直到换行符fopen打开文件,或者获取打开文件的信息打开文件,或者获取打开文件的信息fprintf格式化输入数据到文件格式化输入数据到文件fread从文件中读取二进制数据从文件中读取二进制数据frew

21、ind将文件的位置指针移至文件开头位置将文件的位置指针移至文件开头位置fscanf格式化读入格式化读入fseek设置文件位置指针设置文件位置指针fwrite向文件中写入数据向文件中写入数据ftell文件位置指针文件位置指针文件操作文件操作fscanf & fprintfn 1)读文本文件)读文本文件n fscanf函数可以读取文本文件的内容,并按指定格式存入矩阵。函数可以读取文本文件的内容,并按指定格式存入矩阵。其调用格式为:其调用格式为:n A,COUNT=fscanf(fid,format,size)n 说明:其中说明:其中A用来存放读取的数据,用来存放读取的数据,COUNT返回所

22、读取的数据元返回所读取的数据元素个数,素个数,fid为文件句柄,为文件句柄,format用来控制读取的数据格式,用来控制读取的数据格式, size为为可选项。可选项。n 2)写文本文件)写文本文件n fprintf函数可以将数据按指定格式写入到文本文件中。其调用格函数可以将数据按指定格式写入到文本文件中。其调用格式为:式为:n fprintf(fid,format,A)n 说明:说明:fid为文件句柄,指定要写入数据的文件,为文件句柄,指定要写入数据的文件,format是用来控是用来控制所写数据格式的格式符,与制所写数据格式的格式符,与fscanf函数相同,函数相同,A是用来存放数据的是用来存

23、放数据的矩阵。矩阵。1. 矩阵型数据的读写矩阵型数据的读写txt 数据data1.txta.txt内容:1 2 3 45 6 7 8n fid1=fopen(J:a.txt,r);n data=fscanf(fid1,%d %d %d %d,4,2);n datan data =n 1 5n 2 6n 3 7n 4 8 data2=data; data2data2 = 1 2 3 4 5 6 7 82. 带变量名的矩阵带变量名的矩阵型数据的读写型数据的读写data2.txt3. 含有时间的矩阵型数据的读写含有时间的矩阵型数据的读写data3.txt data4.txt 4. 混合数字与字符串数

24、据的读写混合数字与字符串数据的读写n文件文件test2.txt内容:内容:n 你好你好1 11 111 1111欢迎来到欢迎来到2 22 222 2222动力学与仿真控制论坛动力学与仿真控制论坛3 33 333 4 44 444 44445 55 555 5555 n fidin=fopen(H:shujutest2.txt); % 打开打开test2.txt文件文件 nfidout=fopen(H:shujumkmatlab.txt,w); n % 创建创建MKMATLAB.txt文件文件nwhile feof(fidin) % 判断是否为文件末尾判断是否为文件末尾 n tline=fget

25、l(fidin); % 从文件读行从文件读行 n if double(tline(1)=48&double(tline(1) d = Time,Temperature; 12,98; 13,99; 14,97;n xlswrite(J:shujutestdata2.xls, d, 1, E1)n a=xlsread(J:shujutestdata2.xls);n a1=xlsread(J:shujutestdata2.xls,1,E2:F4);n a3,h=xlsread(J:shujutestdata2.xls,1);6. 含有时间格式变量的含有时间格式变量的excel数据读写数据读

26、写data6.xls a. 将单元格的格式从日期型改为数值型即可b. b. 如果时间信息对处理数据比较重要怎么办?如果时间信息对处理数据比较重要怎么办? 首先删除首先删除excelexcel文件中的全部字符型的变量名。然后利文件中的全部字符型的变量名。然后利用下面的方法将时间读到第二个文本变量中去。用下面的方法将时间读到第二个文本变量中去。7. 基本的读写基本的读写 首先要知道数据的结构首先要知道数据的结构 500hPa的位势高度数据,结构是的位势高度数据,结构是144*73*25(data7.dat)二进制数据8. NetCDF格式数据格式数据采用的全球温度数据采用的全球温度数据 data8

27、.ncNetCDF, Grib和hdf格式数据9. Grib格式数据格式数据 首先是安装首先是安装Grib工具箱工具箱read_grib1.4.0.tar,将其解压后添,将其解压后添加路径(具体可看参考的网上教程)。加路径(具体可看参考的网上教程)。n 第一步:将第一步:将Matlab最上面的当前路径最上面的当前路径“current directory”选择到选择到read_grib文件夹下。文件夹下。n 第二步:在命令框中输入第二步:在命令框中输入“mex BDS_unpack_mex5.c”进进行相关行相关C语言程序的编译。直到屏幕上出现语言程序的编译。直到屏幕上出现“Select a c

28、ompiler:.”时,再进行编译器的选择(我输入时,再进行编译器的选择(我输入1进行进行选择)。编译成功后就会出现选择)。编译成功后就会出现.实例:实例:10. hdf数据数据data10.hdfa. 直接用直接用file里面里面importdata就可以读就可以读hdf数据数据b. 通过命令控制读取通过命令控制读取hdf数据数据program10.m12. 矩阵操作矩阵操作其 他a3 = 12 98 13 99 14 97 aa=reshape(a3,2 3)aa = 12 14 99 13 98 97三、图 形 绘 制13. plot命令绘图 14. contour(f)命令绘图 15.

29、不同投影方式绘图16. 其他图图形形绘绘制制13. plot命令绘图命令绘图 绘制二维曲线的基本函数线的颜色,线的形式,符号形式和图例n MATLAB 允许程序员选择轨迹的颜色允许程序员选择轨迹的颜色,轨迹的形式轨迹的形式,和符号的类型和符号的类型.在在X,Y 向量参向量参数后带有这些属性的字符串的数后带有这些属性的字符串的plot 函数函数,可以选择这些细节可以选择这些细节.n 这些属性字符串包括三个方面这些属性字符串包括三个方面,n 第一方面指定轨迹的颜色第一方面指定轨迹的颜色,n 第二方面指定符号的类型第二方面指定符号的类型,n 第三方面指定线的类型第三方面指定线的类型.附加属性设置le

30、gend(string1,string2,.,pos)其中string1,string2 等等是与轨迹标签名,而pos 是一个整数,用来指定图例的位置。这些整数所代表的意义在表2.10 中的列出。用legend off 命令将能去除多余的图例。一个完整的图象例子将会显示图2.7 中,产生这个图象的语句如下所示。图2.7 在同一坐标系内,显示了f(x)=sin2x 和它的微分函数的图象,用黑实线代表f(x),用红虚线代表它的微分函数。图中有标题,坐标轴标签和网格线。x=0:pi/100:2*pi;y1=sin(2*x);y2=2*cos(2*x);plot(x,y1,k-,x,y2,b-);ti

31、tle( Plot of f(x)=sin(2x) and its derivative);xlabel(x);ylabel(y);legend(f(x),d/dx f(x)grid on;text(x,y,图形说明)1.plot 函数的x,y 均用线性尺度2.semilogx 函数x 轴用对数尺度,y 轴将用线性尺度3.semilogy 函数x 轴用线性尺度,y 轴用对数尺度4.loglog 函数两坐标轴将会都用对数尺度。打印数据既可以用对数尺度,也可以用线性尺度。在x,y 轴上使用这两种尺度的一种或两种可以组合形成4 种不同的坐标系。每一种组合者有一个特定的函数。axis以及hold on

32、 、hold off、subplot(m,n,p) 图形窗口分割:图形窗口分割:subplot(m,n,p)该函数把当前窗口分成mn个绘图区,m行,每行n个绘图区,区号按行优先编号。其中第p个区为当前活动区。每一个绘图区允许以不同的坐标系单独绘制图形。n 利用函数利用函数plot在一个坐标系中画以下几个函数图像,要求采用不同颜色、不同在一个坐标系中画以下几个函数图像,要求采用不同颜色、不同线形、不同的符号标记函数为:线形、不同的符号标记函数为:n 程序如下:程序如下:n t=0:pi/20:2*pi;n x=sin(t);n y=cos(t);n z=sin(2*t);n plot(t, x,

33、 -k*, t, y, -rs, t, z, :bo) n 图像如下:图像如下:双纵坐标函数plotyyn 在在Matlab中,如果需要绘制出具有不同纵坐标标度的两个图形,可以中,如果需要绘制出具有不同纵坐标标度的两个图形,可以使用使用plotyy函数,它能把具有不同量纲,不同数量级的两个函数绘制函数,它能把具有不同量纲,不同数量级的两个函数绘制在同一个坐标中,有利于图形数据的对比分析。使用格式为:在同一个坐标中,有利于图形数据的对比分析。使用格式为:plotyy(x1,y1,x2,y2)n x1,y1对应一条曲线,对应一条曲线,x2,y2对应另一条曲线。横坐标的标度相同,纵对应另一条曲线。横

34、坐标的标度相同,纵坐标有两个,左边的对应坐标有两个,左边的对应x1,y1数据对,右边的对应数据对,右边的对应x2,y2。其他形式的线性直角坐标图n 在线性直角坐标中,其他形式的图形有条形图、阶梯图、杆图和填充在线性直角坐标中,其他形式的图形有条形图、阶梯图、杆图和填充图等,所采用的函数分别为:图等,所采用的函数分别为:n bar(x,y,选项),选项) 选项在单引号中选项在单引号中n stairs(x,y,选项),选项)n stem(x,y,选项),选项)n fill(x1,y1,选项,选项1,x2,y2,选项,选项2,)n 前三个函数和前三个函数和plot的用法相似,只是没有多输入变量形式。

35、的用法相似,只是没有多输入变量形式。fill函数按函数按向量元素下标渐增次序依次用直线段连接向量元素下标渐增次序依次用直线段连接x,y对应元素定义的数据点。对应元素定义的数据点。分别以条形图、填充图、阶梯图和杆图形式绘制曲线n x=0:0.35:7;n y=2*exp(-0.5*x);n subplot(2,2,1);bar(x,y,g);n title(bar(x,y,g);axis(0, 7, 0 ,2);n subplot(2,2,2);fill(x,y,r);n title(fill(x,y,r);axis(0, 7, 0 ,2);n subplot(2,2,3);stairs(x,y

36、,b);n title(stairs(x,y,b);axis(0, 7, 0 ,2);n subplot(2,2,4);stem(x,y,k);n title(stem(x,y,k);axis(0, 7, 0 ,2);024600.511.52bar(x,y,g)024600.511.52fill(x,y,r)024600.511.52stairs(x,y,b)024600.511.52stem(x,y,k)极坐标图polarpolar函数用来绘制极坐标图,调用格式为:函数用来绘制极坐标图,调用格式为:polar(theta,rho,选项),选项)其中,其中,theta为极坐标极角,为极坐标极

37、角,rho为极径,选项的内容和为极径,选项的内容和plot函数相似。函数相似。 示例示例theta=0:0.01:2*pi;rho=sin(3*theta).*cos(5*theta);polar(theta,rho,r); 0.2 0.4 0.6 0.8 13021060240902701203001503301800plot3n plot3(x1,y1,z1,选项,选项1,x2,y2,z2,选项,选项2,)n 其中每一组其中每一组x,y,z组成一组曲线的坐标参数,选项的定义和组成一组曲线的坐标参数,选项的定义和plot的选项一样。的选项一样。当当x,y,z是同维向量时,则是同维向量时,则x

38、,y,z对应元素构成一条三维曲线。当对应元素构成一条三维曲线。当x,y,z是同维矩阵时,则以是同维矩阵时,则以x,y,z对应列元素绘制三维曲线,曲线条数等于矩阵的对应列元素绘制三维曲线,曲线条数等于矩阵的列数。列数。n 例如:例如:n x=0:pi/30:20*pi;n y=sin(x);z=cos(x);n plot3(x,y,z)n 得到三维螺旋线:得到三维螺旋线:三维曲线绘图平面网格坐标矩阵的生成n 原理:原理:n 当绘制当绘制z=f(x,y)所代表的三维曲面图时,先要在所代表的三维曲面图时,先要在xy平面选定一矩形区平面选定一矩形区域,假定矩形区域为域,假定矩形区域为Da,bc,d,然

39、后将,然后将a,b在在x方向分成方向分成m份,份,将将c,d在在y方向分成方向分成n份,由各划分点做平行轴的直线,把区域份,由各划分点做平行轴的直线,把区域D分成分成mn个小矩形。生成代表每一个小矩形顶点坐标的平面网格坐标矩个小矩形。生成代表每一个小矩形顶点坐标的平面网格坐标矩阵,最后利用有关函数绘图。阵,最后利用有关函数绘图。三维曲面三维曲面yx0产生平面区域内的网格坐标矩阵有两种方法:n 1、利用矩阵运算生成。、利用矩阵运算生成。n x=a:dx:b;n y=(c:dy:d);n X=ones(size(y)*x;n Y=y*ones(size(x);n 经过上述语句执行后,矩阵经过上述语

40、句执行后,矩阵X的每一行都是向量的每一行都是向量x,行数等于向量,行数等于向量y的的元素个数,矩阵元素个数,矩阵Y的每一列都是向量的每一列都是向量y,列数等于向量,列数等于向量x的元素个数。的元素个数。n 2、利用、利用meshgrid函数生成;函数生成;n x=a:dx:b;n y=c:dy:d;n X,Y=meshgrid(x,y);n 语句执行后,所得到的网格坐标矩阵和上法,相同,当语句执行后,所得到的网格坐标矩阵和上法,相同,当x=y时,可以时,可以写成写成meshgrid(x)空间曲面作图函数n (1)mesh函数绘制彩色网格面图形调用格式:函数绘制彩色网格面图形调用格式:n mes

41、h(z),mesh(x,y,z)和和mesh(x,y,z,c)n 其中,其中,mesh(x,y,z,c)画出颜色由画出颜色由c指定的三维网格图指定的三维网格图n (2)surf在矩形区域内显示三维带阴影曲面图调用格式与在矩形区域内显示三维带阴影曲面图调用格式与mesh类类似似注意:注意:n 一般情况下,一般情况下,x,y,z是维数相同的矩阵,是维数相同的矩阵,x,y是网格坐标矩阵,是网格坐标矩阵,z是网格点上的高度矩阵,是网格点上的高度矩阵,c用于指定在不同高度下的颜色范围。用于指定在不同高度下的颜色范围。n c省略时,省略时,Matlab认为认为c=z,也即颜色的设定是正比于图形的高度的。,

42、也即颜色的设定是正比于图形的高度的。这样就可以得到层次分明的三维图形。这样就可以得到层次分明的三维图形。n 当当x,y省略时,把省略时,把z矩阵的列下标当作矩阵的列下标当作x轴的坐标,把轴的坐标,把z矩阵的行下标矩阵的行下标当作当作y轴的坐标,然后绘制三维图形。轴的坐标,然后绘制三维图形。n 若若x、y均为向量,则均为向量,则length(x)=n,length(y)=m,m,n=size(z) 三维曲面n 利用函数利用函数 ,绘制一个墨西哥帽子的图形,绘制一个墨西哥帽子的图形n 程序如下:程序如下:n a,b=meshgrid(-8:.5:8); %先生成一个网格先生成一个网格n c=sqr

43、t(a.2+b.2)+eps;n z=sin(c)./c;n mesh(a,b,z)n axis squaren 图像如下:图像如下:n 利用利用surf绘制马鞍面图形(函数为:)绘制马鞍面图形(函数为:)n 程序如下:程序如下:n x,y=meshgrid(-25:1:25,-25:1:25);n z=x.2/9-y.2/4;n surf(x,y,z)n title(马鞍面马鞍面)n grid offn 图像如下:图像如下:从图中可以发现,网格图从图中可以发现,网格图(mesh)中线条有颜色,)中线条有颜色,线条间补面无颜色。曲面线条间补面无颜色。曲面图(图(surf)的线条都是黑)的线条都

44、是黑色的,线条间补面有颜色。色的,线条间补面有颜色。进一步观察,曲面图补面进一步观察,曲面图补面颜色和网格图线条颜色都颜色和网格图线条颜色都是沿是沿z轴变化的。轴变化的。n Matlab还提供了一个还提供了一个peaks函数,称为多峰函数,常用于三维曲面的演函数,称为多峰函数,常用于三维曲面的演示。该函数可以用来生成绘图数据矩阵,矩阵元素由函数:示。该函数可以用来生成绘图数据矩阵,矩阵元素由函数:n 在矩形区域在矩形区域3 33 3的等分网格点上的函数值确定。如:的等分网格点上的函数值确定。如:z=peaks(30)将生成一个)将生成一个3030矩阵矩阵n eg:n x,y,z=peaks(3

45、0);n meshz(x,y,z);多峰函数peaks-4-2024-4-2024-10-50510其他三维图形n在介绍二维图形时,曾经提到条形图、杆图、饼图和填充图等特殊图形,它们还可以在介绍二维图形时,曾经提到条形图、杆图、饼图和填充图等特殊图形,它们还可以以三维形式出现,其函数分别为以三维形式出现,其函数分别为bar3,stem3,pie3和和fill3。n bar3绘制三维条形图,常用格式为:绘制三维条形图,常用格式为:nbar3(y);或者);或者 bar3(x,y)n在第一种格式中,在第一种格式中,y的每个元素对应于一个条形。第二种格式在的每个元素对应于一个条形。第二种格式在x指定

46、的位置上绘制指定的位置上绘制y中中元素的条形图。元素的条形图。n stem3函数绘制离散序列数据的三维杆图,常用格式为:函数绘制离散序列数据的三维杆图,常用格式为:nstem3(z)或者)或者stem3(x,y,z)n第一种格式将数据序列第一种格式将数据序列z表示为从表示为从xy平面向上延伸的杆图,平面向上延伸的杆图,x和和y自动生成。第二种格自动生成。第二种格式在式在x和和y指定的位置上绘制数据序列指定的位置上绘制数据序列z的杆图,的杆图,x,y,z的维数要相同。的维数要相同。n pie3函数绘制三维饼图,常用格式为:函数绘制三维饼图,常用格式为:npie3(x)nx为向量,用为向量,用x中

47、的数据绘制一个三维饼图。中的数据绘制一个三维饼图。n fill3函数可在三维空间内绘制出填充过的多边形,常用格式为:函数可在三维空间内绘制出填充过的多边形,常用格式为:nfill3(x,y,z,c)n用用x,y,z做多边形的顶点,而做多边形的顶点,而c指定了填充的颜色。指定了填充的颜色。n 除了上面讨论的三维图形外,常用的图形还有瀑布图和三维曲面的等高线图。除了上面讨论的三维图形外,常用的图形还有瀑布图和三维曲面的等高线图。绘制瀑布图用绘制瀑布图用waterfall函数,用法和函数,用法和meshz函数相似,只是它的网格线在函数相似,只是它的网格线在x轴轴方向出现,具有瀑布效果。等高线图分二维

48、和三维两种形式,分别使用函数方向出现,具有瀑布效果。等高线图分二维和三维两种形式,分别使用函数contour和和contour3绘制。绘制。n subplot(1,2,1);n X,Y,Z=peaks(30);n waterfall(X,Y,Z);n xlabel(XX);ylabel(YY);zlabel(ZZ);n subplot(1,2,2);n contour3(X,Y,Z,12,r);%其中其中12代表高度的等级数代表高度的等级数n xlabel(XX);ylabel(YY);zlabel(ZZ);-505-505-10-50510XXYYZZ-202-202-10-50510ZZX

49、XYY视点处理n 在日常生活中,从不同的角度观察物体,所看到的物体形状是不一样在日常生活中,从不同的角度观察物体,所看到的物体形状是不一样的。同样,从不同视点绘制的三维图形的形状也是不一样的。视点位的。同样,从不同视点绘制的三维图形的形状也是不一样的。视点位置可由方位角和仰角表示。置可由方位角和仰角表示。n Matlab提供了设置视点的函数提供了设置视点的函数view,其调用格式为:,其调用格式为:n view(az,el)n 其中其中az为方位角,为方位角,el为仰角,它们均以度为单位。系统默认的视点定为仰角,它们均以度为单位。系统默认的视点定义为方位角为义为方位角为-37.5度,仰角度,仰

50、角30度。度。从不同视点绘制多峰函数曲面n subplot(2,2,1);mesh(peaks);n view(-37.5,30);n title(1);n subplot(2,2,2);mesh(peaks);n view(0,90);n title(2);n subplot(2,2,3);mesh(peaks);n view(90,0);n title(3);n subplot(2,2,4);mesh(peaks);n view(-7,-10);n title(4);从不同视点绘制多峰函数曲面图050050-1001010204060020406020204060-10-5051030204060050-10-50510414. contour(f)绘图命令绘图命令绘制海岸线n set(gca,LineWidth,2,FontSize,12,Ylim,-90 90,Xlim,-180 180,clim,-35,45,Position,0.05 0.4 0.4 0.45,XTick,-180:60:180,XTicklabel,-180W,-120W,-60W,0,60E,120E,180E,YTick,-90:30:90,YTicklabel,-90S,-60S,-30S,0,30N,60N,90N);%添加坐标经纬度坐标轴添加坐标经纬度坐标轴n hold onn

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论