0
点赞
收藏
分享

微信扫一扫

《Matlab语法》第11章 文件操作

i奇异 2022-01-05 阅读 50
matlab

第11章 文件操作

(11.1) 文件的打开与关闭

fid = fopen(fileName,permission);
status = fcolse(fid);

(11.2) 文本文件的读写

[A,count] = fscanf(fid,fmt,size); %读
count = fprint(fid,fmt,A); %
clc;clear;
fid = fopen('data.txt','r');
title = fscanf(fid,'%s',6); %读取标题行
cache = cell(3,6); %3×6的元胞数组来接受读取数据
for i = 1:3
    cache{i,1} = fscanf(fid,'%s',1);
    cache{i,2} = fscanf(fid,'%s',1);
    cache{i,3} = fscanf(fid,'%f',1);
    cache{i,4} = fscanf(fid,'%f',1);
    cache{i,5} = fscanf(fid,'%f',1);
    cache{i,6} = fscanf(fid,'%s',1);
end
disp(cache);
fclose(fid);
>>
    '1月1日'    'NW'     [2.2000]    [2.3000]    [1024]    '晴转多云'
    '1月2日'    'W'      [1.5000]    [     3]    [1022]    '晴转多云'
    '1月3日'    'SSE'    [     1]    [2.6000]    [1020]    '晴转多云'

(11.3) 二进制文件的读写

[A,count] = fread(fid,size,precision,skip); %读
count = fwrite(fid,A,precision); %

(11.4) 文件指针位置控制

fseek(fid,offset,origin); %改变文件指针的位置
position = ftell(fid); %查询文件指针的当前位置
status = feof(fid); %判断当前文件指针是否到达了文件尾部,是(status=1)、否(status=0)

(11.5) CSV文件的读写

csvwrite(fileName,M,row,col); %从指定的行和列偏移量开始将矩阵M以逗号分隔(CSV)形式写入文件中(行和列从0开始)
M = csvread(filename,R1,C1,[R1 C1 R2 C2]); %仅读取行偏移量R1和R2及列偏移量C1和C2界定的范围
clc;clear;
fileName = 'data.csv';
row = 1;col = 1;M = magic(4);
csvwrite(fileName,M,row,col);
type(fileName); %查看文件中的数据,只能是包含数值型数据的文件
A = csvread(fileName)
B = csvread(fileName,2,2)
C = csvread(fileName,2,2,[2,2,3,3])
>>
    ,,,,
    ,16,2,3,13
    ,5,11,10,8
    ,9,7,6,12
    ,4,14,15,1
A =
    0     0     0     0     0
    0    16     2     3    13
    0     5    11    10     8
    0     9     7     6    12
    0     4    14    15     1
B =
    11    10     8
     7     6    12
    14    15     1
C =
    11    10
     7     6

(11.6) TEXT文件的读写

clc;clear;
fileName = 'data.txt';
M = magic(3)*pi;
N = magic(4)*pi;
%用制表符划分相邻元素,每个元素以3位有效数字显示
dlmwrite(fileName,M,'delimiter','\t','precision',3);
type(fileName);
%用追加方式写入文件,1行的行偏移量,用“;”划分相邻元素,显示三位小数
dlmwrite(fileName,N,'-append','delimiter',';','roffset',1,'precision','%.3f');
%delimiter还可以为','';''\t'' ',coffset控制列偏移量
type(fileName);
>>
    25.1 3.14 18.8
    9.42 15.7 22
    12.6 28.3 6.28

    25.1 3.14 18.8
    9.42 15.7 22
    12.6 28.3 6.28
    ;;;
    50.265;6.283;9.425;40.841
    15.708;34.558;31.416;25.133
    28.274;21.991;18.850;37.699
    12.566;43.982;47.124;3.142
clc;clear;
fileName = 'data.txt';
M = magic(3);
N = magic(4);
dlmwrite(fileName,M,'delimiter',' ');
dlmwrite(fileName,N,'delimiter',' ','-append','roffset',1);
type(fileName);
A = dlmread(fileName,' ')
B = dlmread(fileName,' ',1,1)
C = dlmread(fileName,' ',[1 1 2 2])

>>
    8 1 6
    3 5 7
    4 9 2
   
    16 2 3 13
    5 11 10 8
    9 7 6 12
    4 14 15 1
A =
    8     1     6     0
    3     5     7     0
    4     9     2     0
    0     0     0     0
   16     2     3    13
    5    11    10     8
    9     7     6    12
    4    14    15     1
B =
    5     7     0
    9     2     0
    0     0     0
    2     3    13
   11    10     8
    7     6    12
   14    15     1
C =
    5     7
    9     2

(11.7) EXCEL文件的读写

xlswrite('filename',A,'sheet','xlRange'); %[num,txt,raw] = xlsread('fileName','sheet','xlRange'); %
clc;clear;
fileName = 'data.xlsx';
sheet = 1;
write_range = 'A1';
read_range = 'A1:F4';
headers = {'日期','风向','风速','气温','气压','天气状况'};
contents = {'1月1日','NW',2.2,2.3,1024,'晴间多云';...
            '1月2日','W',1.5,3,1022,'晴间多云';...
            '1月3日','SSE',1,2.6,1020,'晴间多云'};
xlswrite(fileName,[headers;contents],sheet,write_range);
[num,txt,raw] = xlsread(fileName,sheet,read_range)
>>
num =
    1.0e+03 *
        0.0022    0.0023    1.0240
        0.0015    0.0030    1.0220
        0.0010    0.0026    1.0200
txt =
    4×6 cell 数组
        {'日期'    }    {'风向'}    {'风速'  }    {'气温'  }    {'气压'  }    {'天气状况'}
        {'2021/1/1'}    {'NW'  }    {0×0 char}    {0×0 char}    {0×0 char}    {'晴间多云'}
        {'2021/1/2'}    {'W'   }    {0×0 char}    {0×0 char}    {0×0 char}    {'晴间多云'}
        {'2021/1/3'}    {'SSE' }    {0×0 char}    {0×0 char}    {0×0 char}    {'晴间多云'}
raw =
    4×6 cell 数组
        {'日期'    }    {'风向'}    {'风速'  }    {'气温'  }    {'气压'}    {'天气状况'}
        {'2021/1/1'}    {'NW'  }    {[2.2000]}    {[2.3000]}    {[1024]}    {'晴间多云'}
        {'2021/1/2'}    {'W'   }    {[1.5000]}    {[     3]}    {[1022]}    {'晴间多云'}
        {'2021/1/3'}    {'SSE' }    {[     1]}    {[2.6000]}    {[1020]}    {'晴间多云'}
举报

相关推荐

0 条评论