第二部分:数据处理与应用一、实测资料的质量控制•*实时观测数据的质量控制是科学研究和业务工作中一个重要的环节,因为所采取数量质量的高低直接影响到工作的成败。•*质量控制方法:1、人工审查方法•2、(计算机编程)经验统计方法•(A)极值法:资料通常都有极大值(上限)和极小值(下限),通过各种方法确定出适当的极值作为判断数据正确与否的上下限范围。当数据超出此范围,则认为该数据是可疑的,应将其剔除。但当对实测地海洋气象资料不熟悉的情况下,很难确定适当的极值范围。此时,可使用“莱因达”准则进行计算确定极值。•莱因达准则:根据误差理论,一般情况下,随机误差服从正态分布,以一段时间数据的平均值代表真值,对某个时刻的观测数据Xi,若满足•,其中•为资料标准差,则认为数据Xi可疑,应剔除。•XSXXi31/12nXXSnii•用莱因达准则的前提是要有足够大的观测数据,当n10时注定要失败。因此在观测次数较少的场合最好不要使用该准则,否则“弃真”概率较高。•用莱因达准则计算极值,当观测数据Xi满足公式•或时,则观测数据为错误数据。•(B)一致性检验法:是一种常见的质量控制方法。其基本思想是利用要素之间的关系进行检查判断要素是否正确。例如,天气现象与能见度的关系(如当能见度30km,则不应该有天气现象。而当能见度1km,必然有影响能见度的天气现象出现(雾、降水、烟尘、扬沙等));总云量与低云量的关系(总云量=低云量);气温与露点之间的关系(气温=露点温度);风速与浪高的关系等。当相关的两个要素之间发生矛盾时,至少可以断定其中一个要素是错误的,但要判断哪一个要素正确,哪一个要素错误,还有一定困难。在实际业务和科研工作中,科技人员从分析图或积累的经验上,能判断出对错。但在计算机上,软件设计方面和运行成本方面可能有一定困难。简单的处理办法是将两个要素都剔除,否则,就必须附加判断条件,找到邻近测站或邻近时间点数据进行比较。SXXi3SXXi3-<二、matlab软件与语言基础•Matlab(MatrixLaboratory)是美国MathWorks公司开发的一套高性能的数值分析和计算软件,用于概念设计,算法开发,建模仿真,实时实现的理想的集成环境,是目前最好的科学计算类软件之一。•MATLAB,即“矩阵实验室”,它是以矩阵为基本运算单元。具有强大的矩阵运算能力:MatrixLaboratory(矩阵实验室),使得矩阵运算非常简单。•MATLAB已发展成为适合众多学科,多种工作平台、功能强大的大型软件。在欧美等国家的高校,MATLAB已成为线性代数、自动控制理论、数理统计、数字信号处理、时间序列分析、动态系统仿真等高级课程的基本教学工具。成为攻读学位的本科、硕士、博士生必须掌握的基本技能。在设计研究单位和工业开发部门,MATLAB被广泛的应用于研究和解决各种具体问题。在中国,MATLAB也已日益受到重视,短时间内就将盛行起来,因为无论哪个学科或工程领域都可以从MATLAB中找到合适的功能。•70年代中期,CleveMoler和他的同事开发了LINPACK和EISPACK的Fortran子程序库•70年代末期,CleveMoler在新墨西哥大学给学生开线性代数,为学生编写了接口程序,这程序取名为MATLAB,即MATrixLABoratory•1983年春天,工程师JohnLittle与Moler、SteveBangert一起开发了第二代专业版MATLAB•1984年,MathWorks公司成立,MATLAB正是推向市场,之后其功能不断扩充,版本不断升级。MATLAB语言的优势•编程简单,类似于其他语言,如C•集成度更高,扩展性更好•数学问题数值计算能力强大•由Maple内核构成的符号运算工具箱可以继承Maple所有解析解的求解能力•在数学、工程领域有各种“工具箱”•强大的系统仿真能力,Simulink建模•在控制界是国际首选的计算机语言启动MATLAB命令窗口•计算机安装好MATLAB之后,双击MATLAB图标,就可以进入命令窗口,此时意味着系统处于准备接受命令的状态,可以在命令窗口中直接输入命令语句。•MATLAB语句形式》变量=表达式;a=8;通过等于符号将表达式的值赋予变量。当键入回车键时,该语句被执行。语句执行之后,窗口自动显示出语句执行的结果。如果希望结果不被显示,则只要在语句之后加上一个分号(;)即可。此时尽管结果没有显示,但它依然被赋值并在MATLAB工作空间中分配了内存。变量(1)变量的命名:变量的名字必须以字母开头(不能超过19个字符),之后可以是任意字母、数字或下划线;变量名称区分字母的大小写;变量中不能包含有标点符号。(2)一些特殊的变量ans:用于结果的缺省变量名i、j:虚数单位pi:圆周率eps:计算机的最小数inf:无穷大realmin:最小正实数realmax:最大正实数nan:不定量notanumber赋值•直接赋值语句赋值变量=赋值表达式例:a=pi^2a=9.8696例:表示矩阵B=[1+9i,2+8i,3+7j;4+6j5+5i,6+4i;7+3i,8+2j1i]B=1.0000+9.0000i2.0000+8.0000i3.0000+7.0000i4.0000+6.0000i5.0000+5.0000i6.0000+4.0000i7.0000+3.0000i8.0000+2.0000i0+1.0000i•冒号表达式v=s1:s2:s3该函数生成一个行向量v,其中s1是起始值,s2是步长(若省略步长为1),s3是最大值。例:用不同的步距生成(0,p)间向量。v1=0:0.2:piv2=0:-0.1:pi%步距为负,不能生成向量,得出空矩阵v3=0:piv4=pi:-1:0%逆序排列构成新向量v5=[0:0.4:pi,pi]linspace(a,b,n)ones(m,n)•基本语句格式B=A(v1,v2)v1、v2分别表示提取行(列)号构成的向量。例:A=[1,2,3,4;3,4,5,6;5,6,7,8;7,8,9,0]A=1234345656787890size(A)B1=A(1:2:end,:)%提取全部奇数行、所有列。B1=12345678B2=A([3,2,1],[2,3,4])%提取3,2,1行、2,3,4列构成子矩阵。A=B2=1234678345645656782347890B3=A(:,end:-1:1)%将A矩阵左右翻转,即最后一列排在最前面。B3=4321654387650987•矩阵转置•B=A.’C=A’•矩阵翻转–左右翻转B=fliplr(A)–上下翻转C=flipud(A)–旋转90o(逆时针)D=rot90(A)–如何旋转180o?D=rot90(rot90(A))•矩阵乘方–MATLAB实现:F=A^x•x=[13;24]•y=[57;68]•x2=reshape(x,4,1)•y2=reshape(y,4,1)•z1=[x2y2]•z2=[x2;y2]•点运算--矩阵对应元素的直接运算数学表示:MATLAB实现:C=A.*B例:A=[1,2,3;4,5,6;7,8,0];B=A.^AB=1427256312546656823543167772161C=A.*AC=14916253649640•逻辑变量:非0表示逻辑1•逻辑运算(相应元素间的运算)–与运算A&C–或运算A|C–非运算~A矩阵的逻辑运算•各种允许的比较关系,=,,=,==,~=,find(),all(),any()•例:AA=123456780矩阵的比较运算[i,j]=find(A=5);[i,j]%显示行标,列标ans=31223223all(A=5)%某列元素全大于或等于5时,相应元素为1,否则为0。ans=000any(A=5)%某列元素中含有大于或等于5时,相应元素为1,否则为0。ans=111三、数据分析处理•1、求平均风速•2、求风速的方差和标准差•3、质量控制:极值法—莱因达准则•3、统计最大风速及相应的风向•4、统计盛行风向(聚类)•5、插值•6、风速连续时间序列的带权重平滑四、绘图•matlab语言丰富的图形表现方法,使得数学计算结果可以方便地、多样性地实现了可视化,这是其它语言所不能比拟的。本次处理需用到的Matlab函数一个时间序列X•平均值mean(X)•方差var(X)•标准差std(X)•最大值max(X)•风速时间序列风向:风吹来的方向流向:海流流去的方向北风:0°东风:90°顺时针增加•盛行风向