Matlab读取各种文件(二)

目录

1. 文本文件(.txt)

2. csv文件(逗号分隔值)

3. Excel文件(.xls、.xlsx)

4. 图像文件(.jpg、.png、.tif)

5. 视频文件(.avi、.mp4)

5. NetCDF文件

6. fopen、fread、fwrite、fscanf


1. 文本文件(.txt)

(1)使用readtable函数读取文本文件

% 读取文本文件
filename = 'data.txt';
% 使用readtable函数读取文本文件
data = readtable(filename);
% 查看读取的数据
disp(data);

(2)使用fopen和fgetl函数逐行读取文本文件

% 读取文本文件
filename = 'data.txt';
% 打开文件
fileID = fopen(filename, 'r');
% 按行读取文件内容
data = [];
tline = fgetl(fileID);
while ischar(tline)
    data = [data; tline];
    tline = fgetl(fileID);
end
% 关闭文件
fclose(fileID);
% 查看读取的数据
disp(data);

(3)使用fopen和sscanf函数来逐行读取文本文件

% 读取文本文件
filename = 'data.txt';
% 打开文件
fileID = fopen(filename, 'r');
% 按行读取文件内容
data = [];
tline = fgets(fileID);
while ischar(tline)
    data = [data; tline];
    tline = fgets(fileID);
end
% 关闭文件
fclose(fileID);
% 解析读取的数据,使用sscanf函数对每行数据进行解析。
parsedData = cell(size(data));
for i = 1:numel(data)
    parsedData{i} = sscanf(data{i}, '%f');%假设每行数据包含浮点数
end
% 查看读取的数据
disp(parsedData);

        注:fgetlfgets都是从文本文件里面读一行的内容,差别在于,前者返回的结果中包含换行符而后者忽略换行符。另外还有一点,fgets 调用时可以附加一个参数,指定一次最多读多少个字符(在行很长的时候避免消耗资源太大)。

(4)textscan用于按照指定的格式读取文本文件中的数据,并将其存储为单元格数组

% 读取文本文件并存储为单元格数组
filename = 'data.txt';
fileID = fopen(filename, 'r');
formatSpec = '%f %f %f'; % 替换为您的数据格式
data = textscan(fileID, formatSpec);
fclose(fileID);
disp(data);

(5)importdata用于读取包括文本文件在内的各种不同格式的数据文件,它可自动推断数据的格式,并返回一个结构数组

% 读取文本文件并存储为结构数组
filename = 'data.txt';
data = importdata(filename);
disp(data);

(6)dlmread函数用于读取以特定分隔符分隔的文本文件中的数据,并将其存储为数值数组

% 读取以逗号分隔的文本文件并存储为数值数组
filename = 'data.txt';
data = dlmread(filename, ',');
disp(data);

2. csv文件(逗号分隔值)

(1)readtable函数用于读取包含表格数据的CSV文件,并将其存储为表格数据类型

% 读取CSV文件并存储为表格
filename = 'data.csv';
data = readtable(filename);
disp(data);

(2)csvread函数用于读取CSV文件中的数据,并将其存储为数值数组

% 读取CSV文件并存储为数值数组
filename = 'data.csv';
data = csvread(filename);
disp(data);

(3)textscan函数也可以用来读取CSV文件,并将其存储为单元格数组

% 读取CSV文件并存储为单元格数组
filename = 'data.csv';
fileID = fopen(filename, 'r');
formatSpec = '%f %f %f'; % 替换为自己的数据格式
data = textscan(fileID, formatSpec, 'Delimiter', ',');
fclose(fileID);
disp(data);

3. Excel文件(.xls、.xlsx)

(1)xlsread函数用于读取Excel文件中的数据,并将其存储为数值数组或单元格数组

% 读取Excel文件并存储为数值数组
filename = 'data.xlsx';
data = xlsread(filename);
disp(data);

(2)readtable函数也可以用于读取Excel文件,并将其存储为表格数据类型

% 读取Excel文件并存储为表格
filename = 'data.xlsx';
data = readtable(filename);
disp(data);

4. 图像文件(.jpg、.png、.tif)

(1)imread函数用于读取图像文件,并将其存储为图像矩阵

% 读取.jpg文件
filename = 'image.jpg';
% filename = 'image.png';
% filename = 'image.tif';
imageData = imread(filename);
imshow(imageData);

(2)imformats函数可以返回Matlab支持的图像文件格式列表

formats = imformats();
disp(formats);

(3)使用geotiffread函数读取带有地理坐标的.tif栅格数据

        确保已经安装了MATLAB的Mapping Toolbox。如果没有安装,可以通过MATLAB的Add-Ons管理器进行安装。

[im, R] = geotiffread(filename);
% im是读取的图像数据,R是地理参考对象,包含了地理坐标信息

% 如果需要查看地理坐标信息,可以使用geotiffinfo函数
info = geotiffinfo(filename);
% info对象包含了.tif文件的详细信息,包括地理坐标系统和投影信息

% 使用mapshow函数可以将栅格数据显示在地理坐标系中
mapshow(im, R);

5. 视频文件(.avi、.mp4)

(1)VideoReader类用于读取视频文件,并提供对视频帧的访问

% 读取.avi文件
filename = 'video.avi';
% filename = 'video.mp4';
videoObj = VideoReader(filename);
% 遍历视频的每一帧
while hasFrame(videoObj)
    frame = readFrame(videoObj);
    imshow(frame);
end

(2)vision.VideoFileReader对象也可用于读取视频文件,并提供对视频帧的访问

% 读取.avi文件
filename = 'video.avi';
% filename = 'video.mp4';
videoObj = vision.VideoFileReader(filename);
% 遍历视频的每一帧
while ~isDone(videoObj)
    frame = step(videoObj);
    imshow(frame);
end

5. NetCDF文件

(通常用于存储海洋和气象数据)

(1)ncread函数用于读取NetCDF文件中的变量数据

% 读取NetCDF文件
filename = 'data.nc';
% 读取单个变量
varData = ncread(filename, 'variable_name');
disp(varData);
% 读取多个变量
varData1 = ncread(filename, 'variable_name1');
varData2 = ncread(filename, 'variable_name2');
disp(varData1);
disp(varData2);

(2)ncinfo函数可以获取NetCDF文件的信息,包括变量、维度等

% 获取NetCDF文件信息
filename = 'data.nc';
fileInfo = ncinfo(filename);
% 显示变量信息
disp(fileInfo.Variables);
% 显示维度信息
disp(fileInfo.Dimensions);

(3)ncdisp函数可以以更详细的方式显示NetCDF文件的信息

% 显示NetCDF文件信息
filename = 'data.nc';
ncdisp(filename);

6. fopen、fread、fwrite、fscanf

(1)fopen函数用于打开文件,并返回文件标识符

% 打开二进制文件
filename = 'data.bin';
fileID = fopen(filename, 'r'); % 'r'表示以只读方式打开文件
% 检查文件是否成功打开
if fileID == -1
    error('无法打开文件');
end
% 其他操作,如读取数据或写入数据

% 关闭文件
fclose(fileID);

(2)fread函数用于从打开的文件中读取二进制数据

% 打开二进制文件
filename = 'data.bin';
fileID = fopen(filename, 'r'); % 'r'表示以只读方式打开文件
% 检查文件是否成功打开
if fileID == -1
    error('无法打开文件');
end
% 读取二进制数据
data = fread(fileID, [rows, columns], precision);
% 关闭文件
fclose(fileID);

        注:fopen函数使用文件名和打开模式作为参数,返回一个文件标识符,用于后续的文件操作。'r'表示以只读方式打开文件。fread函数使用文件标识符、数据大小(由[rows, columns]指定)和数据精度(由precision指定)作为参数。它将返回从文件中读取的二进制数据。

(3)fwrite函数用于将数据以二进制形式写入文件

% 打开二进制文件
filename = 'data.bin';
fileID = fopen(filename, 'w'); % 'w'表示以写入方式打开文件
% 检查文件是否成功打开
if fileID == -1
    error('无法打开文件');
end
% 写入二进制数据
data = [1 2 3 4 5]; % 要写入的数据
fwrite(fileID, data, 'double'); % 'double'表示数据类型为双精度浮点数
% 关闭文件
fclose(fileID);

(4)fscanf函数用于从文件中按格式读取数据

% 打开文本文件
filename = 'data.txt';
fileID = fopen(filename, 'r'); % 'r'表示以只读方式打开文件
% 检查文件是否成功打开
if fileID == -1
    error('无法打开文件');
end
% 读取数据
formatSpec = '%f'; % 格式字符串,此处使用%f表示读取浮点数
data = fscanf(fileID, formatSpec);
% 关闭文件
fclose(fileID);
  • 0
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值