1、1q学习目标q了解Matlab软件环境qm文件编辑环境,查看变量内容,单步跟踪程序,查看运行结果。q获取命令帮助的方法(help与doc)。qMatlab数据类型qExcel文件读取函数xlsread与写入函数xlswriteq重点与难点q如何分区域读取excel文件q熟悉matlab软件环境与获取命令帮助的方法2q形式1:num=xlsread(filename)q形式2:num,txt=xlsread(filename,sheet,range)q输入变量qfilename:Excel文件名,默认sheet1中的数据区域存储到双精度矩阵num中。数据区域的选取规则是:对表格前几个含有非数值的
2、行(列)直接忽略,不算入数据区域;另外如果在数据区域中含有非数值的单元,将其处理为nan。qsheet:指定工作薄名或者编号。如果是工作簿名用单引号括起来。qrange:指定一个矩形的区域,用单引号括起来;例如:D2:H4代表以D2和H4为对角定点的矩形域。q输出变量qnum:输出的数值qtxt:输出的文本q注意:excel文件在读取时应保持关闭状态。3qstatus,message=xlswrite(filename,array,sheet,range)q输入变量qfilename:文件名qarray:待写入数据的变量名qsheet:指定写入的工作薄名,用单引号括起来。默认写入第一个工作薄。
3、如不存在,新建一个。qrange:指定写入的矩形区域,用单引号括起来;例如:D2:H4代表以D2和H4为对角定点的矩形域。q输出变量-可选qstatus:写入状态。1表示写入成功;0表示写入失败。qmessage:若失败,则显示失败信息。q注意:excel文件在写入时应保持关闭状态。4qR,P=corrcoef(X)q输入变量qX:需要计算相关系数的矩阵,行表示个案或者对象,列表示变量或属性。计算X各列变量之间的相关系数。q输出变量qR:相关系数矩阵。qP:伴随概率矩阵。q在Command Window窗口的命令提示符下,输入R可以查看相关系数矩阵。相关系数是-11之间的值,该值的绝对值越大,
4、表示相关程度越高,为正表示正相关,为负表示负相关。输入P可以查看伴随概率矩阵。伴随概率是01之间的值。P值小于等于0.05,说明相关系数显著。P值大于0.05,说明相关系数不显著。相关系数显著,说明m变量与n变量线性相关。5qV=cov(X)q输入变量q如果X是向量,则计算X的方差。q如果X是矩阵,行表示个案或者对象,列表示变量或属性,则计算X各列变量的协方差矩阵,对角线是每列变量的方差。q输出变量qV:协方差矩阵。q在Command Window窗口的命令提示符下,输入V可以查看协方差矩阵。其第m行n列的值是X中第m变量与第n列变量的协方差值,其第m行m列的值是X中第m列变量的方差。m变量与
5、n变量的协方差为正,说明两个变量是同向变化的;m变量与n变量的协方差为负,说明两个变量是反向变化的。协方差的数值越大,两个变量同向程度也就越大,反之亦然。6q在workspace中新建sample1矩阵,输入如图1.1所示数据,并保存到data1_1.mat数据文件中。计算sample1矩阵中三列变量的协方差矩阵cv。q操作指导q在workspace中,单击new variable按钮 ,输入变量名sample1,并输入数据。单击save按钮 或鼠标右键选择save as,输入文件名data1_1.mat,保存为mat文件。对于已经保存为mat文件的数据,可以单击import data按钮 加
6、载数据。7q命令、代码与运行结果q方法1:命令行中输入命令,得到协方差,见表1.1。q第2行第2列的值179.8222为第2变量的方差;第2行第3列的值93.8000为第2变量与第3变量的协方差;第3行第1列的值-80.6444为第3变量与第1变量的协方差。说明,第3变量与第2变量同向变化,与第1变量反向变化。cov(sample1)ans=175.8778-134.1778 -80.6444 -134.1778 179.8222 93.8000 -80.6444 93.8000 131.06678q方法2:在程序编辑窗口中输入以下程序,保存成sample1_1.m程序。单击运行按钮 运行程序
7、。q%sample1_1.mqload data1_1qcv=cov(sample1)%计算协方差q第2在程序中利用load命令加载mat数据时,后面应跟mat文件名,而非变量名,且data1_1.mat文件应与sample1_1.m程序在同一文件夹下。在利用cov命令计算协方差时,应该用变量名sample1。mat文件的文件名与其中保存的变量名可以不同,且一个mat文件可以保存多个变量。9q在gdp4.xlsx中是Argentina、Australia、Austria、Belgium四个国家从1997年到2015年的不变价格GDP。编写程序做以下计算。q请计算从B列到E列数据的相关系数矩阵和
8、伴随概率矩阵。并按如图1.2所示格式将相关系数输出到gdp4.xlsx文件的“correlation”数据表中。q请计算从B列到E列数据的协方差矩阵。并按如图1.3所示格式将协方差矩阵输出到gdp4.xlsx文件的第3数据表中。10q1.编程分析q第一步,用xlsread函数读取gdp4.xlsx文件中的数据,具体有以下两种方法。q方法一,按如图1.4所示一次性读取所有数据。数值数据读取到矩阵data中,文本型数据读取到矩阵text中。具体语句:data,text=xlsread(funddata.xls)。11qdata中第1列是年份值。因此,取data中所有行,第2列到第5列的数据计算相关
9、系数矩阵,即data(:,2:5)。MATLAB 2010会将A1单元格内的空格也读取到text中,因此只取text中第1行第2列到第5列的数据作为相关系数矩阵的行列标题,即text=text(1,2:5)。MATLAB 2014不会将A1单元格内的空格也读取到text中,因此text中就是四个国家名。q方法二,按如图1.5所示按需分片读取数据。这种读数据方法,text中是四个国家名称,即Argentina、Australia、Austria、Belgium。数值数据读取到矩阵data中。qdata=xlsread(gdp4.xlsx,1,B2:E20);qtt,text=xlsread(gd
10、p4.xlsx,1,B1:E1);12q第二步,利用corrcoef函数计算数据之间的相关性。q第三步,利用xlswrite函数写入数据。因为既要写入行标题又要写入列标题,所以对text矩阵应用了矩阵转置操作()。q2.四国GDP的相关系数及伴随概率矩阵计算q利用图1.4所示第一种读取数据方法,将年份和四国GDP数据,即Excel数据文件中从第2行起始的A列到E列数据,全部读取到data中。四国GDP数据仅是data中的第2列到第5列数据。将一个空格和四个国家的国别名读取到text。四个国家的国别名仅是text的第2列到第5列数据。利用corrcoef函数可以计算其相关系数及伴随概率矩阵,程序
11、见sample1_2.m。13q3.自建内存变量,在命令行中计算相关系数和伴随概率矩阵q步骤1:在workspace中新建变量data,双击打开。q步骤2:将gdp4.xlsx文件中B2:E20的数据复制、粘贴到data变量中。q步骤3:在命令窗口输入命令R,P=corrcoef(data),即可看到相关系数R和伴随概率P,同时在workspace中可以见到这两个变量。q步骤4:可以在workspace中双击打开变量R和P,将其内容粘贴到Excel文件中,也可以直接将这两个变量保存成.mat文件。14q4.自相关系数及伴随概率运行结果与分析q在Command Window窗口的命令提示符下,输
12、入R查看相关系数矩阵,输入P查看伴随概率矩阵。具体结果如图1.6和图1.7所示。q在图1.6和图1.7中,第1行到第4行,或者第1列到第4列依次表示Argentina、Australia、Austria、Belgium这四个国家。相关系数矩阵R的第2行第3列的值为0.9737,表示Australia与Austria之间的相关系数为0.9737,两者之间的正向相关程度较高。伴随概率矩阵P的第2行第3列值为0,即该相关系数的伴随概率为0,因此Australia与Austria之间线性关系显著。15q5.四国GDP的协方差矩阵计算、运行结果与分析q利用如图1.5所示的第二种读取数据方法,仅将四国GD
13、P数据,即Excel数据文件中从第2行起始的B列到E列数据,读取到data。将国别名称,即Excel数据文件中第1行的B列到E列文本数据,读取到text。利用cov函数可以计算其协方差矩阵,并将协方差C行列标题写入gdp4.xlsx的第3张工作表中,程序见sample1_3.m。16q%sample1_3.mq%第二种读取数据方法qdata=xlsread(gdp4.xlsx,1,B2:E20);%除年份外的数值数据全部读取到dataqtt,text=xlsread(gdp4.xlsx,1,B1:E1);%国别名文本数据读取到textqC=cov(data)%计算协方差q%协方差写入到Exce
14、l文件qxlswrite(gdp4.xlsx,C,3,B2:E5)qxlswrite(gdp4.xlsx,text,3,A2:A5)%写入列标题到Excel文件qxlswrite(gdp4.xlsx,text,3,B1:E1)%写入行标题到Excel文件17q在Command Window窗口的命令提示符下,输入C查看协方差矩阵,如图1.8所示。q在图1.8中,第1行到第4行,或者第1列到第4列依次表示Argentina、Australia、Austria、Belgium这四个国家。可见,协方差矩阵C的第2行第2列的值为470.5849,表示Australia的GDP方差为470.5849。第2行第1列的值为202.4865,表示Australia与Argentina的GDP协方差为202.4865,两者同向变化。第2行第3列的值为54.6443,表示Australia与Austria的GDP协方差为54.6443,两者同向变化。Australia与Argentina的同向变化程度高于Australia与Austria的同向变化程度。