MATLAB 文件读写

MATLAB 文件读写

数据读取

文件路径

% 打开文件夹
>> files = dir('Videos');
% 获取文件名
>> files(1).name 

文本数据读取

这一步的前提是上一步进入到当前文件路径里

  • 读取数值文本
    ⚠️在txt文本中%后的文字会被自动识别为注释。
    下面有这样一个txt文件:

MATLAB 文件读写_第1张图片

% 读取文本数据
>> data = load('score.txt'); 
% 得到第1列的数据
>> w = data(:,1);
% 得到第2列和第3列的数据
>> s = data(:,2:3);
% 计算各自的得分
>> r = w'*s %注意转置后相乘,矩阵相乘的条件
r =
    88.29   87.19
  • 读取字符串文本
    下面有这样一个txt文件:

MATLAB 文件读写_第2张图片

% r表示只读的意思
>> fid = fopen('swords.txt','r'); 
% 这里的l表示行的意思
>> t1 = fgetl(fid)
t1 = 
      刘正风
>> t2 = fgetl(fid)
t2 =
     包惜弱
% 读全部用while循环即可

% 将字符组合起来
>> t = [t1(1) t2(3)]
t = 
    刘弱

% 注意读完要close
>> fclose(fid);
  • 举个例子
    下面有这样一个文本:

56C23204-E51A-46CD-87AD-6484B5098CB6.png

filename = 'beltway.dat';
fid = fopen(filename,'r'); % 读取文件
tline = fgetl(fid); tline = fgetl(fid); % 读取第一行 第二行
% 一直无限按行读取下去
while ischar(tline) 
    data = regexp(tline,',','split'); % 按','分割开字符串
    [date,lat,long] = data{:}; % 分别赋值给数组date,lat,long
    time = datenum(date,'dd/mm/yyyy');  % 计算时间day,内置函数
    lat = str2num(lat); long = str2num(long); % str2num:字符串转换成数字;同理num2str:数字转字符串
    tline = fgetl(fid); % 读取下一行
end
fclose(fid); % 关闭文件

写文本数据

新建一个文本在当前目录下bill.txt

% 打开文本,若没有会新建
>> fid = fopen('bill.txt','w');
% 参数1 文件名,参数2写入的数据
>> fprintf(fid,'我的账单\n\n');
% 参数1 文件名,参数2 数据,参数3 像c语言填写%d
>> fprintf(fid,'手机 %d \n',-1200);
>> fprintf(fid,'账目细节\n');
>> detail = -[845 834.2 345 390 893.22];
% %-5d表示往右空5个空格,没有-号表示左边5个空格。.1f表示精度为小数点后1位
>> fprintf(fid,'%-5d %5.1f\n',[1:5;detail]);

输出结果如下:
MATLAB 文件读写_第3张图片

Excel文本数据读取

有如下这样一个Excel文件
MATLAB 文件读写_第4张图片

% 注意参数2为表单
>> data = xlsread('data.xls','Sheet1','A4:C6')
data =
          95          12          33
          45         667         775
         123       43577        2343

% isnan() 即是判断是否为NaN。 
% data('逻辑运算')得到的结果就是如果是就赋值为0,不是就取出来
>> data(isnan(data)) = 0
data =
           0          88          33
           0          11          33
           0          22          33
          95          12          33
          45         667         775
         123       43577        2343

Excel文件的写

>> xlswrite('RS.xls',{'T','W'},'Sheet1','B1:C1');
% 写入一个元胞数组
>> XYZ = {'X','Y','Z';6 6 8; 9 7 5};
>> xlswrite('RS.csv',XYZ','A2:G4');

图片数据读入

% 读图片
Yui = imread('Yui.jpg');
% 显示尺寸,得到的是像素点数,最后一个为层数,3层即RGB
size(Yui)
ans = 
     374 374 3
% 显示图片
image(Yui)
% 取出一部分,参数为像素范围
lip = Yui(242:266,255:279,:);
image(lip);

视频数据读入

obj = VideoReader('Videos/AoiSora.avi');
% 获取第几帧
frame = read(obj,25);
% 显示出来
imshow(frame);

你可能感兴趣的:(MATLAB)