1. MATLAB数据管理

1.1. 利用数据导入向导导入数据

1.1.1. 利用数据导入向导导入TXT文件

单击MATLAB工作界面上的导入数据图标

【例1-1】用数据导入向导读取TXT数据文件“2006平均气温.txt”

1-15 主要城市平均气温 (2006年)

单位:摄氏度

城 市 1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月

北 京 -1.9 -0.9 8.0 13.5 20.4 25.9 25.9 26.4 21.8 16.1 6.7 -1.0

天 津 -2.7 -1.4 7.5 13.2 20.3 26.4 25.9 26.4 21.3 16.2 6.5 -1.7

石家庄 -0.9 1.6 10.3 15.1 21.3 27.4 27.0 25.9 21.8 17.8 8.0 0.4

太 原 -3.6 -0.4 6.8 14.5 19.1 23.2 25.7 23.1 17.4 13.4 4.4 -2.5

……

1.1.2. 利用数据导入向导导入Excel文件

单击MATLAB工作界面上的导入数据图标

【例1-2】把Excel文件“概率统计成绩.xls”中的数据导入到MATLAB工作空间。文件中的数据格式如下图所示。

2. 调用函数读取外部数据

MATLAB中读取数据文件的常用函数

函数名 说 明 函数名 说 明
load 从文本文件导入数据到MATLAB工作空间 fopen 打开文件,获取打开文件的信息
importdata 从文本文件或特殊格式二进制文件(如图片,avi视频等)读取数据 fclose 关掉一个或多个打开的文件
readmatrix 从数据文件中读取数据 fgets 读取文件中的下一行,包括换行符
readtable 读取外部数据,创建表格型数组 fgetl 调用fgets函数,读取文件中的下一行,不包括换行符
sscanf 按指定格式从字符串中读取数据 fscanf 按指定格式从文本文件中读取数据
xlsread 从Excel文件中读取数据 textscan 按指定格式从文本文件或字符串中读取数据

2.1. 调用readmatrix函数读取TXT数据文件

调用格式:

>> A = readmatrix(filename)
>> A = readmatrix(filename,opts)
>> A = readmatrix(___,Name,Value)

【例2-1】调用readmatrix函数读取TXT文件“两段数据与文字.txt”其中包含以下内容:

这是2行头文件,

你可以选择跳过,读取后面的数据。

1.096975, 0.635914, 4.045800, 4.483729, 3.658162, 7.635046

6.278964, 7.719804, 9.328536, 9.727409, 1.920283, 1.388742

6.962663, 0.938200, 5.254044, 5.303442, 8.611398, 4.848533

这里还有两行文字说明和两行数据,

看你还有没有办法!

5.472155, 1.386244, 1.492940

8.142848, 2.435250, 9.292636

>> data = readmatrix('两段数据与文字.txt')
data =
    1.0970    0.6359    4.0458    4.4837    3.6582    7.6350
    6.2790    7.7198    9.3285    9.7274    1.9203    1.3887
    6.9627    0.9382    5.2540    5.3034    8.6114    4.8485
       NaN       NaN       NaN       NaN       NaN       NaN
       NaN       NaN       NaN       NaN       NaN       NaN
    5.4722    1.3862    1.4929       NaN       NaN       NaN
    8.1428    2.4352    9.2926       NaN       NaN       NaN

2.2. 调用textscan函数读取TXT数据文件

1. 调用fopen函数打开文件

调用格式:

>> fid = fopen(filename, permission)
打开方式(permission) 说 明
'rt' 以只读方式打开文件。这是默认情况
'wt' 以写入方式打开文件,若文件不存在,则创建新文件并打开。原文件内容会被清除
'at' 以写入方式打开文件或创建新文件。在原文件内容后续写新内容
'r+t' 以同时支持读、写方式打开文件
'w+t' 以同时支持读、写方式打开文件或创建新文件。原文件内容会被清除
'a+t' 以同时支持读、写方式打开文件或创建新文件。在原文件内容后续写新内容
'At' 以续写方式打开文件或创建新文件。写入过程中不自动刷新文件内容,适合于对磁带介质文件的操作
'Wt' 以写入方式打开文件或创建新文件,原文件内容会被清除。写入过程中不自动刷新文件内容,适合于对磁带介质文件的操作

2. 调用fclose函数关闭文件

调用格式:

>> status = fclose(fid)
>> status = fclose('all')

第1种调用用来关闭文件标识符fid指定的文件,第2种调用用来关闭所有被打开的文件。若操作成功,返回status为0,否则为 -1。

3. 调用textscan函数读取数据

调用格式:

>> C = textscan(fid, 'format')
>> C = textscan(fid, 'format', N)
>> C = textscan(fid, 'format', param, value,)
>> C = textscan(fid, 'format', N, param, value,)
>> C = textscan(str,)
>> [C, position] = textscan()

textscan函数支持的format字符串

格式字符串 说 明
普通字符串 忽略与format字符串相同的内容。例如xie%f表示忽略字符串xie,读取其后的浮点数
%d 读取一个整数。例如%5d指定读取的整数的宽度为5
%u 读取一个无符号整数。例如%5u指定读取的无符号整数的宽度为5
%f 读取一个浮点数。例如%5.2f指定浮点数宽度为5(小数点也算),有2位小数
%s 读取一个包含空格或其他分隔符的字符串。例如%10s表示读取长度为10的字符串
%q 读取一个双引号里的字符串,不包括引号
%c 读取多个字符串,包括空格符。例如%6c表示读取6个字符
%[…] 读取包含方括号中字符的最长字符串
%[\^...] 读取不包含方括号中字符的非空最长字符串
%*… 忽略与*号后字符相匹配的内容。例如%*f表示忽略浮点数

【例2-2】调用textscan函数读取TXT文件“体测成绩数据.txt”,其中包含以下内容:

序号 身高 体重 肺活量 肥胖程度

1 168.4 74.2 4686 肥胖

2 162.3 50.3 3275 较低体重

3 177.1 63.8 3867 正常体重

4 169.8 48.7 3327 营养不良

5 174 71.5 2805 超重

6 161.9 52.1 3625 较低体重

7 178.3 53.8 3678 营养不良

8 159.9 55.2 3007 正常体重

9 162.1 57.7 2800 正常体重

10 171.2 72.2 1609 肥胖

>> fid = fopen('体测成绩数据.txt');   
% 按指定格式读取数据,并将相同类型的连续列进行合并
>>data1 = textscan(fid,'%d %f %f %d %s','HeaderLines',1,'CollectOutput',1) 
data1 =[10x1 int32]  [10x2 double]  [10x1 int32]  {10x1 cell}
>> data1{2}        % 查看读到的数据
ans =
  168.4000   74.2000
  162.3000   50.3000
  177.1000   63.8000
  169.8000   48.7000
  174.0000   71.5000
  161.9000   52.1000
  178.3000   53.8000
  159.9000   55.2000
  162.1000   57.7000
  171.2000   72.2000
>> fclose(fid);    % 关闭文件

【例2-3】调用textscan函数读取TXT文件“教师信息数据.txt”,其中包含以下内容:

Name: xiezh Age: 18 Height: 170 Weight: 65 kg
Name: molih Age: 16 Height: 160 Weight: 52 kg
Name: liaoj Age: 15 Height: 160 Weight: 50 kg
Name: lijun Age: 20 Height: 175 Weight: 70 kg
Name: xiagk Age: 15 Height: 172 Weight: 56 kg
>> fid = fopen('教师信息数据.txt','r'); 
>> A = textscan(fid, '%*s %s %*s %d %*s %d %*s %d %*s',...
    'delimiter', ' ', 'CollectOutput',1)
>> fclose(fid); 
>> A{1,1}
>> A{1,2}

2.3. 调用fgetl和sscanf函数读取TXT数据文件

【例】调用fgetl和sscanf函数逐行读取TXT文件“教师信息数据.txt”中的数值型数据。

>> fid = fopen('教师信息数据.txt','r'); 
>> k = 1;
>> while ~feof(fid)
    str = fgetl(fid); 
    % 忽略姓名字符串,读取该行中的整型数据(年龄、身高和体重)
    data(k,:) = sscanf(str,'Name: %*s Age: %d Height: %d Weight: %d kg')';
    k = k + 1;
end
>> fclose(fid); 
>> data

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

调用格式:

>> [num, txt, raw] = xlsread(filename, sheet, range)

【例2-5】用xlsread函数读取文件“概率统计成绩.xls”第1个工作表中区域A2:H4 的数据。

% 第一种方式:
>> num = xlsread('概率统计成绩.xls','A2:H4')
% 第二种方式:
>> num = xlsread('概率统计成绩.xls',1,'A2:H4')
% 第三种方式:
>> num = xlsread('概率统计成绩.xls','Sheet1','A2:H4')

2.5. 调用readtable函数创建数据表

% 调用格式:
>> T = readtable(filename)
>> T = readtable(filename,Name,Value)

【例2-6】用readtable函数读取文件“学生信息数据.txt”中的数据,创建数据表。

>> T = readtable('学生信息数据.txt','Delimiter',',','ReadRowNames',true)
T = 
           Age    Height    Weight
           ___    ______    ______
    和平     18     170       65    
    谢润和    16     160       52    
    韩宇浩    15     160       50    
    金志文    20     175       70    
    邓泽楷    15     172       56

【例】用readtable函数读取文件“概率统计成绩.xls”中的数据,创建表格型数组。

>> T = readtable('概率统计成绩.xls','ReadRowNames',true);
>> T.Properties.VariableNames = {'x1','x2','x3','x4','x5','x6','x7'}
T = 
           x1          x2         x3      x4    x5    x6     x7 
          _____    __________    _____    __    __    __    ____
    1     60101    6.0101e+06    '陈亮'     21    42    63    ''  
    2     60101    6.0101e+06    '李旭'     25    48    73    ''  
    3     60101    6.0101e+06    '刘鹏飞'     0     0     0    '缺考'
    4     60101    6.0101e+06    '任时迁'    27    55    82    ''  
    5     60101    6.0101e+06    '苏宏宇'    26    54    80    ''  
    6     60101    6.0101e+06    '王海涛'    21    49    70    ''  
    ……

3. 把数据写入文件

MATLAB中写数据到文件的常用函数

函数名 说 明
save 将工作空间中的变量写入文件
dlmwrite 按指定格式将数据写入文本文件
fprintf 按指定格式把数据写入文件
xlswrite 把数据写入Excel文件
writetable 把表格数据写入文件

3.1. 调用save函数保存计算结果

调用格式:

>> save(filename)
>> save(filename,variables)
>> save(filename,variables,fmt)
>> save(filename,variables,version)
>> save(filename,variables,'-append')
>> save filename variables

【例】定义多个变量,调用save函数将它们写入二进制文件“SaveDataToFile.mat”。

>> x = 1:3; 
>> y = [1 2 3;4 5 6;7 8 9]; 
>> S = struct('Name',{'谢中华','xzh'},'Age',{20,10});
>> ds = dataset('XLSFile','概率统计成绩.xls');
>> save('SaveDataToFile.mat'); 
>> save SaveDataToFile.mat;
>> save('SaveDataToFile1.mat','y','S');
>> save SaveDataToFile1.mat   y   S 
>> clear;
>> load SaveDataToFile.mat

3.2. 调用xlswrite函数把数据写入Excel文件

调用格式:

>> [status, message] = xlswrite(filename, M, sheet, range)

【例3-2】生成一个10×10的随机数矩阵,将它写入Excel文件“10阶随机数矩阵.xls”的第2个工作表的“D6:M15”区域。

>> x = rand(10);
>> [s,t] = xlswrite('10阶随机数矩阵.xls', x, 2, 'D6:M15')

【例】定义一个元胞数组,将它写入Excel文件:“测试数据.xls”的自命名工作表的指定区域。

>> x = {1,60101,6010101,'陈亮',63,'';2,60101,6010102,...'李旭',73,'';3,60101, 6010103,'刘鹏飞',0,'缺考'}
>> xlswrite('测试数据.xls', x, 'xiezhh', 'A3:F5')
Copyright © ZHOUWEN all right reserved,powered by GitbookLatest updated: 2023-03-18 23:34:48

results matching ""

    No results matching ""

    results matching ""

      No results matching ""