在大气科学中的应用李若楠一、Matlab界面简介以及一些重要指令和注意事项二、数据处理plot相关命令绘图contour(f)命令绘图不同投影方式绘图其他txt数据Excel数据(.xls)二进制数据NetCDF、hdf和Grib格式数据其他主要内容三、图形绘制当MATLAB程序启动时,一个叫做MATLAB桌面的窗口出现了。默认的MATLAB桌面结构如图1.1所示。在MATLAB集成开发环境下,它集成了管理文件、变量和应用程序的许多编程工具。在MATLAB桌面上可以得到和访问的窗口主要有:命令窗口(TheCommandWindow)命令历史窗口(TheCommandHistoryWindow)启动平台(LaunchPad)编辑调试窗口(TheEdit/DebugWindow)工作台窗口和数组编辑器(WorkspaceBrowserandArrayEditor)帮助空间窗口(HelpBrowser)当前路径窗口(CurrentDirectoryBrowser)一、Matlab界面简介一些重要的命令在任何时侯你都可以用clc命令清空命令窗口(TheCommandWindows)中的内容;可以用clf清空当前图象窗口中的内容。在工作空间窗口(Theworkspacebrowser)中变量可用clear命令清除。正如我们看到的,工作空间窗口(Theworkspacebrowser)中的变量在独立的命令和M文件间执行时,可能会出现第一个问题中的变量存留在工作区而影响到第二个问题的解决。为了避免这种情况的发生,在新的计算开始之前,应当有clear命令清空工作区。变量名的命名MATLAB的变量名必须以字母开头,后面可以跟字母,数字和下划线(_).只有前31个字符是有效的;如果超过了31个字符,基余的字符将被忽略。如果声明两个变量,两变量名只有第32个字符不同,那么MATLAB将它们当作同一变量对待。在MATLAB语言中是区分字母大小的,也就是说,大写字母和小写字母代表的东西是不同的。数组表2.1用于创始化变量的MATLAB函数函数作用zeros(n)创建一个n×n零矩阵zeros(n,m)创建一个n×m零矩阵zeros(size(arr))创建一个与数组arr的零矩阵ones(n)创建一个n×n元素全为1矩阵ones(n,m)创建一个n×m元素全为1矩阵eye(n)创建一个n×n的单位矩阵eye(n,m)创建一个n×m的单位矩阵length(arr)返回一个向量的长度或二维数组中最长的那一维的长度size(arr)返回指定数组的行数和列数数组的运算MATLAB数据导入与导出可以读取的文件类型:文本文件、word文件、xml文件、xls文件、图像文件和音视频文件等有三种方式读取数据1、直接导入(importdata)2、命令窗口3、file操作二、数据处理数据处理txt数据Excel数据(.xls)二进制数据—7.基本的读写NetCDF,Grib和hdf格式数据1.矩阵型数据的读写2.带变量名的矩阵型数据的读写3.含有时间的矩阵型数据的读写4.混合数字与字符串数据的读写5.基本的读写6.含有时间格式变量的excel数据读写其他——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读取各种格式的图形数据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.pcx.tif.xwd.ras存写各种格式的图形数据wavwrite.wav存写Windows系统的声音文件xlswrite.xls存写Excel电子表格数据导出函数命令窗口文本文件(txt)的读写函数功能csvread读入以逗号分隔的数据csvwrite将数据写入文件,数据间以逗号分隔dlmread将以ASCII码分隔的数值数据读入到矩阵中dlmwrite将矩阵数据写入到文件中,以ASCII分隔textscan从文本文件中读入数据,将结果保存为单元数组textread从文本文件中读入数据,将结果分别保存命令窗口csvread、csvwrite具体调用格式M=csvread(‘filename’,row,col,range),将文件filename中的数据读入,并且保存为M,filename中只能包含数字,并且数字之间以逗号分隔。起始行为row,起始列为col,读取的数据由数组range指定,range的格式为:[R1C1R2C2],其中R1、C1为读取区域左上角的行和列,R2、C2为读取区域右下角的行和列。csvwrite('filename',M,row,col),将数组M中的数据保存为文件filename,数据间以逗号分隔。将数组M中的指定数据保存在文件中,数据由参数row和col指定,保存row和col右下角的数据。注:csvwrite写入数据时每一行以换行符结束。另外,该函数不返回任何值。csvwrite('H:\shuju\eg101.txt',M);csvread&csvwrite示例I_MATLAB=imread('H:\shuju\850hpa.bmp');%readintheimageI_MATLAB=rgb2gray(I_MATLAB);%converttheimagetograyfigure,imshow(I_MATLAB);csvwrite('H:\shuju\850hpa.txt',I_MATLAB);%writethedataintoatextsub_MATLAB=csvread('H:\shuju\850hpa.txt',1,500);%readinpartofthedatasub_MATLAB=uint8(sub_MATLAB);figure,imshow(sub_MATLAB);dlmread、dlmwritedlmread函数用于从文档中读入数据,其功能强于csvread。dlmread的调用格式如下:●M=dlmread('filename',delimiter,R,C)●M=dlmread('filename',delimiter,range)其中参数delimiter用于指定文件中的分隔符,其他参数的意义与csvread函数中参数的意义相同,这里不再赘述。dlmread函数与csvread函数的差别在于,dlmread函数在读入数据时可以指定分隔符,不指定时默认分隔符为逗号。dlmwrite函数用于向文档中写入数据,其功能强于csvwrite函数。dlmwrite函数的调用格式为:●dlmwrite(‘filename’,M,‘D’,R,C),指定写入数据的起始位置。●dlmwrite('filename',M,attribute1,value1,attribute2,value2,...),指定任意数目的参数,可以指定的参数见下表。●dlmwrite('filename',M,'-append'),如果filename指定的文件存在,在文件后面写入数据,不指定时则覆盖原文件。●dlmwrite('filename',M,'-append',attribute-valuelist),叙写文件,并指定参数。●dlmwrite函数的可用参数如下表所示。dlmwrite函数的可用参数参数名功能delimiter用于指定分隔符newline用于指定换行符,可以选择“pc”或者“unix”roffset行偏差,指定文件第一行的位置,roffset的基数为0coffset列偏差,指定文件第一列的位置,coffset的基数为0precision指定精确度,可以指定精确维数,或者采用c语言的格式,如“%10.5f”textread,textscan当文件的格式已知时,可以利用textread函数和textscan函数读入。这里只介绍这两个函数应用的实例。按照原有格式读取。[names,types,x,y,answer]=textread('J:\shuju\eg301.txt','%s%s%f%d%s',3)fid1=fopen('J:\shuju\eg3.txt');C=textscan(fid1,'%s%s%f32%d8%u%f%f%s');fclose(fid1);C{1}ans='Sally''YesJoe''Bill'eg3.txt内容:SallyType112.34451.23e10infNaNYesJoeType223.54609e19-inf0.001NoBillType334.90122e510100Noeg301.txt内容:SallyLevel112.3445YesJoeLevel223.5460NoBillLevel334.9012No本节介绍一些基本的文件操作,这些操作如下表所示。MATLAB的基本文件操作函数功能fclose关闭文件feof判断是否为文件结尾ferror文件输入输出中的错误查找fgetl读入一行,忽略换行符fgets读入一行,直到换行符fopen打开文件,或者获取打开文件的信息fprintf格式化输入数据到文件fread从文件中读取二进制数据frewind将文件的位置指针移至文件开头位置fscanf格式化读入fseek设置文件位置指针fwrite向文件中写入数据ftell文件位置指针文件操作fscanf&fprintf1)读文本文件fscanf函数可以读取文本文件的内容,并按指定格式存入矩阵。其调用格式为:[A,COUNT]=fscanf(fid,format,size)说明:其中A用来存放读取的数据,COUNT返回所读取的数据元素个数,fid为文件句柄,format用来控制读取的数据格式,size为可选项。2)写文本文件fprintf函数可以将数据按指定格式写入到文本文件中。其调用格式为:fprintf(fid,format,A)说明:fid为文件句柄,指定要写入数据的文件,format是用来控制所写数据格式的格式符,与fscanf函数相同,A是用来存放数据的矩阵。1.矩阵型数据的读写txt数据data1.txta.txt内容:12345678fid1=fopen('J:\a.txt','r');data=fscanf(fid1,'%d%d%d%d',[4,2]);datadata=15263748data2=data';data2data2=123456782.带变量名的矩阵型数据的读写data2.txt3.含有时间的矩阵型数据的读写data3.txtdata4.txt4.混合数字与字符串数据的读写文件test2.txt内容:你好1111111111欢迎来到2222222222动力学与仿真控制论坛3333333333fidin=fopen('H:\shuju\test2.txt');%打开test2.txt文件fidout=fopen('H:\