logo资料库

海量数据导入与导出MATLAB.pdf

第1页 / 共7页
第2页 / 共7页
第3页 / 共7页
第4页 / 共7页
第5页 / 共7页
第6页 / 共7页
第7页 / 共7页
资料共7页,全文预览结束
     2007年  7月 第 26卷  第 4期  数理统计与管理 App lication of Statistics and Management Jul Vol , 2007 26 No 4         文章编号 : 1002 - 1566 (2007) 04 - 0649 - 07 海量数据导入与导出 MATLAB的有效方法 徐海云  涂雄苓 (桂林工学院数理系  广西桂林市  541004) 摘要 :本文结合实例介绍了几种将海量统计数据快速 、准确地导入与导出 MATLAB 系统的方法 。 克服了以往在编程窗口直接键入原始数据进行处理的诸多问题 ,因此对保证统计分析结果的准确 性与加速 MATLAB在统计分析领域的应用有着很重要的意义 。 关键词 :统计软件 ,海量数据 ,导入与导出 中图分类号 : TP319 文献标识码 : A Eff ic ien tM ethods of M a ssive Da ta s Im porting to and Exporting from M ATLAB XU Hai yun, TU Xiong ling (Department of Mathematics and Physics, Guilin University of Technology, Guilin 541004 China) Abstract: This paper introduces several methods of massive data s importing to and exporting from MATLAB rap idly and accurately, and gives some cases. The methods resolve the many p roblem s appearing in inputting directly origin data into‘Command W indow ysis results and in accelerating MATLAB Key words: statistical software; massive data; ofMATLAB in past, so they have important significance in assuring the accuracy of anal S app lication in statistical analysis. importing and exporting 0 引言 MATLAB 随着其版本不断地更新 ,统计数据处理功能变得越来越强大 ,与其他专业统计软 件相比并不逊色 ,而且具有操作简单 、接口方便 、扩充能力强等优势 ,再加上 MATLAB 的应用 范围广泛 ,因此可以预见 MATLAB 即将成为数据处理与统计分析又一重要的工具 。将原始统 计数据导入软件系统中是进行数据处理与分析起点 ,同时完善的统计规律的探索是建立在对 海量数据的处理与分析的基础上的 ,然而由于 MATLAB 最初主要立足解决矩阵运算及数值分 析 ,所涉及的数据量并不是很大 ,原始数据的导入主要是通过命令窗口输入 ,当时这样做并没 有给数据分析带来太大的不便和障碍 ,但是面对统计分析对海量数据的要求 ,以往这种导入数 据的方法出现很多的问题 ,首先 MATLAB 命令窗口对数据格式有较严格的要求 ,因此对一海 量原始数据进行这么严格输入 ,工作量是可想而知的 ;其次即使操作者有耐心 ,但过程中也极 易出错 ;最后现实中原始数据常以不同文件格式保存 , 如 . dat等 ,如何将这 些不同格式的数据准确而快速导入 MATLAB 界面 。从目前有关 MATLAB 的教科书及文献来 看 ,并没有发现对此问题进行过专门的介绍与研究 ,本论文结合作者的工作经验针对此问题介 . xm l、 txt、 . 收稿日期 : 2005年 12月 16日      基金项目 :本论文受院硕士基金项目支助 (0066011261, 006011262)
056  数理统计与管理           第 26卷  第 4期  2007年 7月 绍一种有效的途径 ,旨意于加速 MATLAB应用研究 。 1 数据导入与导出及实例 1. 为了介绍的方便 ,特结合下面的实例来进行同步说明 。实例 :已知某湖八年来湖水中 COD浓度实测值 ( y)与影响因素湖区工业产值 ( x1 ) 、总人口数 ( x2 ) 、捕鱼量 ( x3 ) 、降水量 ( x4 ) 资料 ,建立污染物 y的水质分析模型 ,其原始数据列于下表 1,且以 Excel文件保存 。 表 1 原始数据 COD 浓度 Y 工业产值 X1 总人口 X2 捕鱼量 X3 降水量 X4 1 1 1 1 1 1 1 1 376 375 387 401 412 428 445 477 0 0 0 0 0 0 0 0 450 475 485 500 535 545 550 575 2 2 2 2 2 3 3 3 170 554 676 713 823 088 122 262 0 1 0 0 1 1 1 1 8922 1610 5346 9589 0239 0499 1065 1387 5 5 5 5 6 6 6 6 19 30 60 82 00 06 45 95   在对数据处理分析前 ,须设法将其导入 MATLAB界面 。以往有关 MATLAB研究文献以及 使用的教材大多用在 Command w indow窗口内直接键入原始数据 ,如本例而言即 > > x1 = [ 1 > > x2 = [ 0 > > x3 = [ 2 > > x4 = [ 0 > > y = [ 5 445, 1 550, 0 122, 3 0499, 1 95 ]; 477 ]; 575 ]; 262 ]; 1065, 1 387, 1 485, 0 676, 2 376, 1 450, 0 170, 2 8922, 1 19, 5 375, 1 475, 0 554, 2 1610, 0 60, 5 30, 5 428, 1 545, 0 088, 3 401, 1 500, 0 713, 2 412, 1 535, 0 823, 3 0239, 1 45, 6 5346, 0 82, 6 9589, 1 00, 6 06, 6 1387 ]; 这样操作存在很多的弊端 ,如操作繁琐 、易使原始数据输入出错且有可能出现程序语法错 误导程序无法执行等 。下面介绍一种更简便 、准确的方法 ,首先 Command W indow窗口内只键 入以下命令 : > > x1 = [ ]; > > x2 = [ ]; > > x3 = [ ]; > > x4 = [ ]; > > y = [ ]; 来快速定义原始数据文件中 6个变量 ,但不在此直接键入数据 ,此时可以看到系统自动在 W orkspace窗口内生成与变量相联系的 5个数据阵列 , 图 1所示 。接着用鼠标依次双击这些 5 个数据阵列 ,以致进一步定义数据阵列的大小 ,结构以及导入原始数据 。以变量 y数据阵列为 例 ,双击数据阵列 y将出现图 2数据阵列编辑界面 ,再在 S ize两个输入框中分别键入行数与列 数 ,对此实例而言就是 8与 1,回车后再出现图 3的界面 ,在这个界面中就可以很方便地将原 始数据键入或拷入对应的数据阵列中 。就本例而言可以先复制原保存在 Excel文件中的原始
徐海云 ,涂雄苓 :海量数据导入与导出 MATLAB 的有效方法 156 数据 ,再粘贴到 MATLAB 的 Workspace的数据阵列中 ,具体操作步骤如图 4和图 5所示 ,如此 六次重复操作 ,就可以完成六个变量的原始值导入 MATLAB。 步骤概要 :运行 MATLAB →进入 Command W indow窗口 →定义空变量 →定义数据阵列 → 变量赋值 (复制数据 →粘贴数据 ) →保存 。 图 1 Workpace窗口自动生成的 5个数据阵列 图 2 数据阵列编辑原始界面 图 3 数据阵列 y结构大小定义过程界面
1 256  数理统计与管理           第 26卷  第 4期  2007年 7月 图 4 在 Excel中将原始数据拷入粘帖板面 为了验证操作的有效性 ,接下来继续完成实例的要求来说明之 。在这里选择用带常数项 的多元线性回归模型以建立水质分析模型 ,在 Command window窗口内键入 : 图 5 通过粘贴将数据导入 MATLAB > > Save data x1 , x2 , x3 , x4 , y; > > load data; > > x = [ ones ( 8, 1) , x1 , x2 , x3 , x4 ]; > > [ b, bint, r, rint, stats] = regress( y, x) 得结果 : b = - 3 0866
徐海云 ,涂雄苓 :海量数据导入与导出 MATLAB 的有效方法 356 2540 9287 3716 17 - 1 - 1 0 3800 stats = 0 7576 2 3444 0 2549 2540x1 - 1 0866 + 17 即 ^y = - 3 R2 = 0 以上结果与专业统计软件 SAS, SPSS处理的结果是一致的 , 因此表明导入数据的方法是 3444, P = 0 7576, F = 2 2549 9287x2 - 1 3716x3 + 0 3800x4 有效的和可行的 。 数据导出过程相对而言简单些 , 首先须在 Spacework窗口内找所需要导出数据所在的数 据阵列 ;再用鼠标左键双击此阵列 ,系统将自动出现类似图 3的界面 ;再通过粘贴板的功能将 数据导拷贝到其它应用程序中 。因为过程大致与导入过程相反 ,所以不做详细介绍 。 下面介绍用 MATLAB 数据接口功能导入数据方法 ,以原始数据为文本文件 (“原始数 2 据 txt”)保存为例 。若要把图 6所示的记事本界面中原始数据导入 MATLAB 系统 ,数据的结 构为 520行 6列 ,即共有 3120个数据 。首先打开 MATLAB系统 ,单击主菜单中的“File”,在下 拉菜单中选中并单击“ Import Data”,此时出现图 7 所示的对话框 。接下来找到“原始数据 txt”所保存的路径并点击“打开 ”,出现图 8所示的界面 ,再单击“Next”,将出现数据预览的界 面 ,再单击界面中的“Finish”,自动回到主界面 ,即完成数据的导入 。最后可观察到在 Work pace窗口中多一个数据阵列 ,也就是刚导入数据的存放处 ,可以根据需要对其重命名 ,最后就 可以对原始统计数据进行所需要的处理分析 。 步骤概要 :运行 MATLAB →单击 File→选择并单击 Import Data→浏览原始数据保存路径 →选择文件 →单击打开 →单击 Next→单击 Finish→保存 。 图 6 以记事本保存的原始数据
456  数理统计与管理           第 26卷  第 4期  2007年 7月 图 7 MATLAB数据导入初始对话框 图 8 MATLAB数据导入数据分离选择界面 2 结语与讨论 众所周知 ,不同的统计软件的功能与特点有一定的差异 ,因此在对一特定统计数据进行处 理分析时 ,往往会借助几个不同软件 ,以提高操作的效率 ,所以不同软件间进行数据导入与导 出是经常的事情 。文章着重介绍两种最常用又行之有效的数据导入与导出的方法 ,操作简单 而且通俗易懂 。为 MATLAB 在统计分析领域的应用奠定了一定的基础 ,同时又对以往有关 MATLAB在统计学及应用数学教科书内容做好很好的补充 。 在方法一中 ,虽然仅以 Excel格式保存的原始数据文件为实例介绍如何导入的过程 ,但并 不排除其它应用程序与 MATLAB之间的数据联结 ,如 Word、Access、SPSS、SAS、DPS、NoSA 等 均能类似的操作建立起与 MATLAB 间的数据导入与导出 。另外 ,当进入图 3所示的界面时 , 但在操作过程中不难发现即使是原始数据是纸质打印的文件 ,而用同样的方法在 Workspace 窗口内之数据阵列键入数据相比在 Command W indow下进行数据键入操作要容易的多 ,而且
徐海云 ,涂雄苓 :海量数据导入与导出 MATLAB 的有效方法 556 能十分清晰看到数据阵列的结构 ,因此不易出错 ;或者首先将纸质打印的原始数据键入 Excel 界面 ,然而再用上述的方法导入 MATLAB也是可行的 ,因为在 Excel中键入数据相对程序更方 便且易修改 。在方法二中 ,是以 txt格式的数据文件为例来介绍的 ,其实其他格式的文件同样 可以此方法来实现统计数据的导入 ,如 dat、doc等 。需要注意的是在图 7所示界面中 ,在选择 数据列的分隔符时一般是因格式而变的 ,可以在此复选项中多试几次 ,而且可以直接输入分隔 符 ,直到的数据阵列达到意想的排列 。在工作中发现 Excel的数据接口功能相对于其它窗口 式统计软件较强 ,而 Excel与 MATLAB又有良好的数据联结性 ,之间的导入与导出较为方便 , 因此遇上不易直接导入 MATLAB数据格式可以先导入 Excel,再导入 MATLAB。当然 MATLAB 数据导入与导出的方法很多 ,在这里主要是介绍几种操作简单而运行有效的方法 ,旨以加速 MATLAB在统计分析的应用中起一抛砖引玉的作用 。 [参考文献 ] [ 1 ]  刘瑞桢 [ 2 ]  程毛林 [ 3 ]  张文彤 [ 4 ]  陈华福. 最新统计电算化教程 : Excel 2000在统计学中的应用 [M ]. 北京 :冶金工业出版社. 2001 年 8 MATLAB的数值和符号计算功能 [ J ]. 电脑编程与维护 , 1997 (8) : 27 - 29. 浅谈 MATLAB软件用于统计分析教学 [ J ] SPSS统计分析教程 (高级篇 ) [M ] 教学参考 , 2001 (5) : 21 - 23. 北京 :北京希望电子出版社 2002年 6月 37 - 52 月. 85 - 96. [ 5 ]  汤旦林 ,李晓强. 学用 SAS软件捷径 (3)第三讲读入外部数据并作统计分析 [ J ]. 数理统计与管理 , 1997 (4) : 46 - 48.
分享到:
收藏