1.数据的导入与导出

  数据的导入与导出

更多MATLAB数据分析视频请点击,或者在网易云课堂上搜索《MATLAB数据分析与统计》 http://study.163.com/course/courseMain.htm?courseId=1003615016


          在用MATLAB进行编程时,不可避免的要涉及到数据的导入与导出,如果数据量比较小,可以通过定义数组的形式直接把数据写在程序中,或是把程序直接输出到MATLAB命令窗口;但是当数据量比较大的时候,这种方法就行不通了。这种情况下就需要从包含数据的外部文件读取数据到MATLAB应用程序中,结果的输出也应该直接写到数据文件。

       MATLAB提供了许多文件读写函数,用来读写文本文件和二进制文件。利用这些函数可以从文本文件和二进制文件中读取数据,赋值给变量,也可以把变量的值写入文本文件或二进制文件。通常情况下,用户习惯把数据存入记事本文件(txt文件)和Excel文件。本章主要内容就是MATLAB读取与导出这两种类型的文件,关于MATLAB如何从数据库中读入文件考虑到有的朋友没有接触过数据库,这部分内容将会在以后给出。

  1,Excel文件的导入

  调用xlsread函数读取Excel文件数据

 (1)num=xlsread(filename)

    读取由filename指定的Excel文件中第1个工作表中的数据,返回一个双精度矩阵num。输入参数filename是由单引号括起来的字符串。

  当Excel工作表的顶部或底部有一个或多个非数字行(如上表中的第一行),左边或右边有一个或多个非数字列(如第H列)时,输出中不包括这些行和列。例如,xlsread会忽略一个电子表格顶部的文字说明。

  对于第D列,它是处于内部的列,对于内部的行货列,即使它有部分是非数字单元格,甚至全部都是非数字单元格,xlsread也不会忽略这样的行或列,在读取的矩阵num中,非数字单元格位置用NaN代替。

例:

num=xlsread('C:\Users\Administrator\Desktop\MATLAB\MATLAB数据分析与统计\chapter1\1_1.xls')

(2)num=xlsread(filename,-1)

  在Excel界面中打开数据文件,允许用户交互式选取要读取的工作表以及工作表中需要导入的数据区域。这种调用会弹出一个提示界面,提示用户选择Excel工作表中的数据区域。在某个工作工作表上单击并拖动鼠标即可选择数据区域,然后单击提示界面上的“确定”按钮即可导入所选区域的数据

例:

num=xlsread('C:\Users\Administrator\Desktop\MATLAB\MATLAB数据分析与统计\chapter1\1_1.xls',-1)

(3)num=xlsread(filename,sheet)

   用参数sheet指定读取的工作表,sheet可以是但引号括起来的字符串,也可以是正整数,当是字符串时,用来指定工作表的名称;当是正整数时,用来指定工作表的序号。

例:

num=xlsread('C:\Users\Administrator\Desktop\MATLAB\MATLAB数据分析与统计\chapter1\1_1.xls',1)

(4)num=xlsread(filename,range)

 用参数range指定读取的单元格区域,range是字符串,为了区分sheet和range参数,range参数必须是包含冒号,形如‘C1:C2‘的表示区域的字符串。若range参数中没有冒号,xlsread就会把它作为工作表的名字或序号,这就可能导致错误。

例:

num=xlsread('C:\Users\Administrator\Desktop\MATLAB\MATLAB数据分析与统计\chapter1\1_1.xls','A2:G3')

(5)num=xlsread(filename,sheet,range)

 同时指定工作表和工作表区域。此时,range参数可以是Excel文件中定义的区域的名字

例:

num=xlsread('C:\Users\Administrator\Desktop\MATLAB\MATLAB数据分析与统计\chapter1\1_1.xls',1,'A2:G3')

(6)num=xlsread(filename,sheet,range,‘basic’)

用基本模式(basic)读取数据。当用户系统没有安装Excel时,用这种模式导入数据,此时导入功能受限,range参数的值会被忽略,可以设定range参数的值为空字符串(‘’),而sheet参数必须是字符串,此时读取的是整个工作表中的数据。

(7)num=xlsread(filename,sheet,range,‘’,functionhandle)

 在读取电子表格里的数据之前,先调用由函数句柄functionhandle指定的函数,它允许用户在读取数据之前对数据进行一些操作,例如在读取数据之前变换数据类型。

 用户可以编写自己的函数,把函数句柄传递给xlsread函数,当调用xlsread函数时,它从电子表格读取数据,把用户函数作用在这些数据上,然后返回最终结果。

  例:

 function DataRange= setplusonel(DataRange)
%UNTITLED 此处显示有关此函数的摘要
%   此处显示详细说明
for k=1:DataRange.Count
    DataRange.Value{k}=DataRange.Value{k}+1;
    %将单元格取值加1
end

num=xlsread('C:\Users\Administrator\Desktop\MATLAB\MATLAB数据分析与统计\chapter1\1_1.xls',1,'A2:G3','',@setplusonel)

(8)[num,txt]=xlsread(filename,.....)

     返回数字矩阵num和文本数据txt。

[num,txt]=xlsread('C:\Users\Administrator\Desktop\MATLAB\MATLAB数据分析与统计\chapter1\1_1.xls')

2.把数据写入Excel文件

xlswrite函数用来将数据矩阵M写入Excel文件,常用的调用格式如下:

xlswrite(filename,M)

xlswrite(filename,M,sheet)

xlswrite(filename,M,range)

xlswrite(filename,M,sheet,range)

status=xlswrite(filename,....)

[status,message]=xlswrite(filename,.....)

其中:

filename为字符串变量,用来指定文件名和文件路径。若filename指定的文件不存在,则创建一个新文件,文件的扩展名决定了Excel文件的函数。若扩展名为“.xls”,则创建一个Excel97-2003下的文件;若扩展名为“.xlsx”、".xlsb"或“.xlsm”,则创建一个Excel2007格式的文件。

 M可以是一个mxn的数值型矩阵或字符串型矩阵,也可以是一个mxn的元胞数组。

 sheet用来指定工作表,可以是代表工作表序号的正整数,也可以是代表工作表名称的字符串。若由sheet指定名称的工作表不存在,则在所有工作表的后面插入一个新的工作表。若sheet为正整数,并且大于工作表的总数,则追加多个空的工作表知道工作表的总数等于sheet。这两种情况都会产生一个警告信息,表明增加了新的工作表。

 range用来指定单元格区域,对于第三种调用格式,range必须包含冒号,形如‘C1:C2’的表示单元格区域的字符串。range指定的单元格区域的大小要与M的大小相匹配,若单元格区域超出了M的大小,则多余的单元格用#N/A填充,若单元格区域小于M的大小,则只写入与单元格区域相匹配的部分数据

 输出status反映了写操作完成的情况,若成功完成,则status等于1(真),否则,status等于0(假),只有在指定输出参数的情况下,xlswrite函数才返回status值

 输出message中包含了写操作过程中的警告和错误信息,它是一个结构体变量,有两个字段:message和identifier。其中,message是包含警告和错误信息的字符串,identifier也是字符串,包含了警告和错误信息的标识符。

例:

生成一个10x10的矩阵,将它写入excel中

 x=rand(10);%生成一个10行10列在[0 1]上均匀分布的随机矩阵

[s,t]=xlswrite('C:\Users\Administrator\Desktop\MATLAB\MATLAB数据分析与统计\chapter1\save_2_1.xls',x,2,'D6:M15')

%把矩阵x写入文件save_2_1.xls中的第2个工作表中的单元格D6:M15,并返回操作信息
s =

     1


t =

       message: ''
    identifier: ''

上面返回的操作信息变量s=1,变量t的message字段为空,说明操作成功,没有出现任何警告,数据被写入文件save_2_1.xls中的指定文字。


例:定义一个元胞数组,将它写入Excel文件save_2_1.xls的自命名工作表的指定区域

(注:元胞数组是MATLAB的一种特殊数据类型,可以将元胞数组看做一种无所不包的通用矩阵,或者叫做广义矩阵。组成元胞数组的元素可以是任何一种数据类型的常数或者常量,每一个元素也可以具有不同的尺寸和内存占用空间,每一个元素的内容也可以完全不同,所以元胞数组的元素叫做元胞(cell)。和一般的数值矩阵一样,元胞数组的内存空间也是动态分配的。 可用换括号“{}”来创建,用逗号或者空格来分隔每一个单元,使用分号“;”来分行。)

x={1,101,6010101,'张三',61,'';2,101,6010102,'李四',70,'';3,101,6010103,'王五',0,'缺考'}%定义一个元胞数组

x =

    [1]    [101]    [6010101]    '张三'    [61]    ''  
    [2]    [101]    [6010102]    '李四'    [70]    ''  
    [3]    [101]    [6010103]    '王五'    [ 0]    '缺考'

>> xlswrite('C:\Users\Administrator\Desktop\MATLAB\MATLAB数据分析与统计\chapter1\save_2_1.xls',x,'chengji','A3:F5')


例:读取1_1.xls文件中的数值型数据,并将读取的数据写入文件save_2_1.xls的自命名工作表的默认区域

num=xlsread('C:\Users\Administrator\Desktop\MATLAB\MATLAB数据分析与统计\chapter1\1_1.xls');
>> %读取文件1_1.xls中的数据
>> %把读取到的数据num写入save_2_1.xls中名称为“成绩”的工作表的默认区域
>> xlswrite('C:\Users\Administrator\Desktop\MATLAB\MATLAB数据分析与统计\chapter1\save_2_1.xls',num,'成绩')


3.读取txt文件

 3.1调用importdata函数读取数据

  (1)importdata(filename)

     把数据从文件导入MATLAB工作空间,filename为字符串,用来指明文件名,若文件名中不指定文件完整路径,则数据文件一定要在当前目录或MATLAB搜索路径下才行, 利用其它函数读取数据也要满足这个基本要求,在这种调用格式下,importdata函数自动识别数据间隔符,读取的数据赋值给变量ans

 例:

 importdata('C:\Users\Administrator\Desktop\MATLAB\MATLAB数据分析与统计\chapter1\3_1.txt')

  (2)A=importdata(filename)

           读取的数据赋值给变量A

例:

 A=importdata('C:\Users\Administrator\Desktop\MATLAB\MATLAB数据分析与统计\chapter1\3_1.txt')

  (3)A=importdata(filename,delimiter)

       用delimiter指定数据列之间的分隔符(如‘\t’表示Tab制表符),把数据从文件filename导入MATLAB工作空间,读取的数据赋值给变量A

    A=importdata('C:\Users\Administrator\Desktop\MATLAB\MATLAB数据分析与统计\chapter1\3_2.txt',',')

 (4)[A D]=importdata(.......)

           返回结构体数组赋值给A,返回分隔符赋值给D

    例:

   [A D]=importdata('C:\Users\Administrator\Desktop\MATLAB\MATLAB数据分析与统计\chapter1\3_3.txt')

 (5)[A D H]=importdata(.......)

          返回结构体数组赋值给A,返回分隔符赋值给D,返回的头文件行数赋值给H

例:

[A D h]=importdata('C:\Users\Administrator\Desktop\MATLAB\MATLAB数据分析与统计\chapter1\3_3.txt')

3.2 调用load函数读取数据

  例如 :

  x1=load('C:\Users\Administrator\Desktop\MATLAB\MATLAB数据分析与统计\chapter1\3_1.txt')

3.3 调用dlmread函数读取数据

 dlmread函数常用格式如下:

 M=dlmread(filename)

 M=dlmread(filename,delimiter)

 M=dlmread(filename,delimiter,R,C)

 M=dlmread(filename,delimiter,range)

其中:

 filename指定文件名;

delimiter指定数据列之间的分隔符,默认分隔符为逗号;

R,C分别指定读取数据的起始行和列,R指定行,C指定列,R和C取值都是从0开始,R=0和C=0分别表示文件的第一行和第一列

range=[R1,C1,R2,C2]用来指定读取数据的范围,(R1,C1)表示读取的数据矩阵的左上角的行和列,(R2,C2)表示右下角的位置(行和列)。

例:

x=dlmread('C:\Users\Administrator\Desktop\MATLAB\MATLAB数据分析与统计\chapter1\3_2.txt')

 x=dlmread('C:\Users\Administrator\Desktop\MATLAB\MATLAB数据分析与统计\chapter1\3_2.txt',',',2,3)

 x=dlmread('C:\Users\Administrator\Desktop\MATLAB\MATLAB数据分析与统计\chapter1\3_2.txt',',',[1,2,2,5])

注:dlmread函数适合读取全是数据的文件,数据间可以用空格、逗号、分号分隔,也可以用其他字符串分隔(不要用%分隔),但是当同一数据文件中有多种分隔符时,dlmread就不能正确的读取了。


3.4 调用textread函数读取数据

  textread函数可按用户指定格式读取文本文件中的数据,还可以同时指定多种数据分隔符。

  (1)[A,B,C,.....]=textread(‘filename’,‘format’)

     以用户指定格式从数据文件中读取数据,赋值给变量A,B,C,....等。filename为数据文件的文件名,format用来指定读取数据的格式,它确定了输出变量的个数和类型。可用的format字符串如下表

格式字符串        说明

%d              读取一个无符号整数,例如%5d指定读取的无符号整数的宽度为5

%u                读取一个整数

%f                      浮点数

%s           字符串

%q           读取一个双引号例的字符串,不包括引号

%c            读取多个字符,包括空格符,例%5c 表示读取5个字符

%[......]       读取包含方括号中字符的最长字符

%[^.....]       读取不包含方括号中字符的非空最长字符串

%*.....          忽略与*号后字符相匹配的内容,例如%*f 表示忽略浮点数

%w......          指定读取内容的宽度

(2)[A,B,C,.....]=textread(‘filename’,‘format’,N)

 若N为正整数,则重复使用N次由format指定的格式读取数据;若N<0,则读取整个文件

(3)[.....]=textread(....,'param','value',....)

     设定成对形式出现的参数名和参数值,可以更为灵活的读取数据。字符串param用来指定参数名,value用来指定参数的取值。例如param可取为‘delimiter’(分隔符),value可取‘,;*’(,;*为分隔符)

例:文件中文字与数据交替出现,通过设置format参数,用冒号和空格(‘:  ’)作为分隔符,可以读取文件中的文字和数据

format='%s %s %s %d %s %d %s %d %s';

[c1,c2,c3,c4,c5,c6,c7,c8,c9]=textread('C:\Users\Administrator\Desktop\MATLAB\MATLAB数据分析与统计\chapter1\3_4.txt',format,'delimiter',':');


总结:

对于数据量比较小的数据文件,dlmread和load所用时间比较短,textread函数次之,importdata函数用时最长。而对于比较大型的数据,dlmread函数用时最短,textread函数次之,load和importdata函数用时比较长。


4.把数据写入txt文件

dlmwrite函数用来将矩阵数据写入文本文件。调用格式如下:

 (1)dlmwrite(filename,M)

          默认用逗号作分隔符,将M矩阵的数据写入filename指定的文件中。filename为字符串变量,用来指定目标文件的文件名,可以包含路径,若不指定路径,则自动保存到MATLAB当前文件夹。M为写入的矩阵

例:

 x=rand(10)

dlmwrite('C:\Users\Administrator\Desktop\MATLAB\MATLAB数据分析与统计\chapter1\4_1.txt',x)

  (2)dlmwrite(filename,M,‘D’)

          指定分隔符,将M矩阵的数据写入filename指定的文件中,D为单个字符,用来指定数据分隔符,例如‘ ’表示空格,‘\t’表示制表符

例:

dlmwrite('C:\Users\Administrator\Desktop\MATLAB\MATLAB数据分析与统计\chapter1\4_2.txt',x,';')

    (3)dlmwrite(filename,M,‘D’,R,C)

     允许用户从目标文件的第R行、第C列开始写入数据。R表示M矩阵的左上角行数,C表示列数。R和C都是从0开始,即R=0和C=0表示第一行第一列。

  (4)dlmwrite(filename,M,‘attribute1’,value1,‘attribute2’,value2,.......)

     利用可选的成对出现的参数名和参数值来控制写入文件的方式,可用的参数名(attribute)与参数值(value)如下表

  参数名                 参数值                                          说明

delimiter           单个字符,如‘,’,‘ ’,‘\t’等     设定数据间分隔符

newline            ‘pc’                                                        设定换行符为‘\r\n’

newline                 'unix'                                         设定换行符为‘\n’

roffset                 通常为非负整数                         M矩阵的左上角在目标文件中所处的行

coffset                  同时为非负整数                        M矩阵的左上角在目标文件中所处的列

precision            以%号引导的精度控制符,如‘%10.5f’   用来指定有效位数

例:

 dlmwrite('C:\Users\Administrator\Desktop\MATLAB\MATLAB数据分析与统计\chapter1\4_4.txt',x,'delimiter',';','newline','pc','roffset',3,'coffset',3)

(5)dlmwrite(filename,M,‘-append’)

   如指定的文件存在,则从原文件内容的后面续写数据,当不设定‘-append’选项时,将清除原文件内容,重新写入数据。如指定文件不存在,则创建一个新文件并写入矩阵数据。

 dlmwrite('C:\Users\Administrator\Desktop\MATLAB\MATLAB数据分析与统计\chapter1\4_5.txt',x,'delimiter',';','newline','pc','-append')


更多MATLAB数据分析视频请点击,或者在网易云课堂上搜索《MATLAB数据分析与统计》 http://study.163.com/course/courseMain.htm?courseId=1003615016


  • 19
    点赞
  • 98
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
好的,下面是Oracle数据库基础数据导入导出方法: 1. 数据导出 您可以使用Oracle提供的exp命令来导出数据。exp命令可以将一个或多个表、视图、存储过程等对象导出到一个二进制文件中。下面是一个exp命令的例子: ``` exp username/password@sid file=/path/to/export.dmp tables=(table1, table2) ``` 其中,username是数据库用户名,password是数据库密码,sid是Oracle实例名,file是导出文件的路径和文件名,tables是要导出的表的列表。 如果您想导出整个数据库,可以使用以下命令: ``` exp username/password@sid file=/path/to/export.dmp full=y ``` 2. 数据导入 您可以使用Oracle提供的imp命令来导入数据。imp命令可以将一个或多个表、视图、存储过程等对象从一个二进制文件中导入数据库中。下面是一个imp命令的例子: ``` imp username/password@sid file=/path/to/export.dmp tables=(table1, table2) ``` 其中,username是数据库用户名,password是数据库密码,sid是Oracle实例名,file是导入文件的路径和文件名,tables是要导入的表的列表。 如果您想导入整个数据库,可以使用以下命令: ``` imp username/password@sid file=/path/to/export.dmp full=y ``` 需要注意的是,在导入数据之前,您需要先在目标数据库中创建相应的表。如果导入数据与目标数据库中的表结构不匹配,可以使用Oracle提供的数据转换工具来进行数据转换。 希望这些信息能够帮助您进行Oracle数据库基础数据导入导出。如果您有任何其他问题,请随时问我。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

技术提高效率

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值