matlab读取多种类型的文件(代码汇总)

文本文件

  • ASCII或其他格式的文本文件:可以使用fscanf函数或textscan函数读取。这些函数允许用户根据数据的格式(如浮点数、整数、字符串等)来指定读取方式。

fsanf函数

读取一个名为 data.txt 的文本文件,其内容如下:

1.23 4.56 7.89  
10 20 30  
Hello World

读取前两行的浮点数。

% 打开文件  
fileID = fopen('data.txt', 'r');  
  
% 读取前两行的浮点数(假设每行有三个浮点数)  
% 注意:%f 是用于浮点数的格式说明符  
nums = fscanf(fileID, '%f %f %f\n', [2 Inf]); % 读取两行,每行三个浮点数  
  
% 关闭文件  
fclose(fileID);  
  
% 显示结果  
disp(nums);

读取包含字符串的第三行

% 重新打开文件
fileID = fopen('data.txt', 'r');  
  
% 跳过前两行
fseek(fileID, ftell(fileID) + 2*strlen('1.23 4.56 7.89\n')); % 假设每行长度相同,这里只是示例  

% fscanf(fileID, '%f %f %f\n', [2 1]); % 读取但不保存前两行  
  
% 读取第三行作为字符串  
% 注意:%s 是用于字符串的格式说明符,但默认会在空格处停止读取  
% 为了读取整行,我们可以使用 %[^\n] 匹配除换行符以外的任何字符  
str = fscanf(fileID, '%[^\n]', 1); % 读取一行  
  
% 如果知道要读取的行的确切位置或数量  
% 可以直接跳到那里然后读取  
% fseek(fileID, ...); % 跳到第三行的开始  
% str = fgetl(fileID); % 使用 fgetl 读取一行,包括换行符(可选地,可以使用 str(1:end-1) 去除换行符)  
  
% 关闭文件  
fclose(fileID);  
  
% 显示结果(注意:fscanf 返回的字符串可能包含末尾的换行符,这取决于文件)  
disp(['Read string: ', str{1}]); % 使用 str{1} 是因为 fscanf 返回的是 cell 数组

textscan函数

读取名为 data.txt 的文本文件,其内容如下:

1.23 4.56 7.89  
10 20 30  
31.4 59.2 88.6

使用以下 MATLAB 代码来读取这个文件:

% 定义文件名  
filename = 'data.txt';  
  
% 打开文件以进行读取  
fileID = fopen(filename, 'r');  
  
% 检查文件是否成功打开  
if fileID == -1  
    error('无法打开文件 %s', filename);  
end  
  
% 使用textscan函数读取数据  
% 假设每行包含三个浮点数,格式字符串为'%f %f %f'  
% 这里我们使用Cell数组来存储结果,因为textscan返回的是cell数组  
% 注意:'CollectOutput'参数设置为true时,textscan会将所有匹配的数据收集到一个cell数组中  
C = textscan(fileID, '%f %f %f', 'Delimiter', ' ', 'CollectOutput', true);  
  
% 关闭文件  
fclose(fileID);  
  
% 提取数据  
% C是一个cell数组,其中C{1}包含了所有的第一个浮点数,C{2}包含了第二个,依此类推  
% 如果我们想要一个二维数组来存储这些数据,我们可以这样做:  
numData = cat(1, C{1}, C{2}, C{3}); % 使用cat函数将三个一维数组组合成一个二维数组  
  
% 如果每行的数据数量都是固定的,我们可以直接使用reshape函数  
% 但在这个例子中,由于我们已经有了三个单独的cell数组,所以上面的cat方法更直接  
  
% 显示结果(可选)  
disp('读取的数据:');  
disp(numData);
  • 逗号分隔的文本文件(CSV):可以使用importdata函数、csvread函数或readtable函数读取。importdata函数特别适用于读取包含混合数据类型(如数字和文本)的CSV文件。
% 读取CSV文件  
filename = 'data.csv';  
data = readtable(filename); % 使用readtable读取为表格形式  
% 或者  
% data = csvread(filename); % 注意:csvread在较新版本的MATLAB中可能已被弃用  
% data = importdata(filename); 
% 对于混合数据类型,建议使用readtable  
  
% 访问数据  
disp(data);

Excel文件

  • 早期版本的Excel文件(.xls):可以使用xlsread函数读取。但请注意,随着MATLAB版本的更新,xlsread函数可能逐渐被淘汰,建议使用readtablereadmatrix等函数代替。
  • 较新版本的Excel文件(.xlsx):推荐使用readtable函数读取,该函数可以基于文件的扩展名自动确定文件格式,并读取数据为表格形式。
% 读取Excel文件  
filename = 'data.xlsx';  
data = readtable(filename); % 读取为表格  
% 或者,如果你只需要读取特定的工作表或范围  
% sheet = 1; % 或 'Sheet1'  
% range = 'A1:C3';  
% data = readtable(filename, 'Sheet', sheet, 'Range', range);  
  
% 访问数据  
disp(data);

readmatrix读取Excel

% 定义Excel文件名(包括路径,如果不在当前工作目录下)  
filename = 'data.xlsx';  
  
% 使用readmatrix函数读取Excel文件  
% 注意:readmatrix会自动选择第一个工作表,并读取其中的数据  
% 如果数据不是连续的数值数据,或者包含非数值列/行,readmatrix可能会报错或返回不期望的结果  
dataMatrix = readmatrix(filename);  
  
% 显示读取的数据(可选)  
disp('读取的Excel数据:');  
disp(dataMatrix);

读取名为'Sheet2'的工作表

% 定义Excel文件名和工作表名称  
filename = 'data.xlsx';  
sheet = 'Sheet2'; % 想要读取名为'Sheet2'的工作表  
  
% 使用readspreadsheet函数读取特定工作表  
dataMatrix = readspreadsheet(filename, sheet);  
  
% 显示读取的数据(可选)  
disp('从特定工作表读取的Excel数据:');  
disp(dataMatrix);

MAT文件

  • MATLAB的二进制文件(.mat):可以使用load函数读取。.mat文件是MATLAB专用的数据存储格式,可以包含各种数据类型,如数组、结构体、类等。
% 读取MAT文件  
filename = 'data.mat';  
load(filename); % 这将加载所有变量到工作区  
% 如果只想加载特定变量  
% load(filename, 'variableName');  
  
% 假设MAT文件中有一个名为'myData'的变量  
% disp(myData);

其他类型文件

  • 音频文件:可以使用audioread函数读取,该函数支持多种音频格式,如WAV、MP3等。
  • 图像文件:可以使用imread函数读取,该函数支持多种图像格式,如JPG、PNG、TIFF等。
  • 视频文件:可以使用videoread函数读取,该函数支持多种视频格式,如AVI、MP4等。
% 读取音频文件  
filename = 'audio.wav';  
[signal, Fs] = audioread(filename); % signal是音频信号,Fs是采样率  
  
% 播放音频(可选)  
sound(signal, Fs);
% 读取图像文件  
filename = 'image.jpg';  
img = imread(filename); % 读取图像到img变量  
  
% 显示图像  
imshow(img);
% 读取视频文件  
filename = 'video.mp4';  
videoObj = VideoReader(filename); % 创建VideoReader对象  
  
% 读取并显示第一帧  
frame = readFrame(videoObj);  
imshow(frame);  
  
% 注意:要播放整个视频,你需要在一个循环中读取每一帧并显示

特殊格式文件

  • JSON文件:MATLAB没有内置直接读取JSON文件的函数,但可以通过第三方工具箱(如JSONLab)来实现。
  • XML文件:MATLAB提供了xmlread函数来读取XML文件,并允许用户通过XML对象模型来访问和操作XML数据。
% 使用JSONLab读取JSON文件(需要安装JSONLab)  
filename = 'data.json';  
jsonData = jsondecode(fileread(filename)); % 首先读取文件内容,然后解码JSON  
  
% 访问JSON数据  
% 假设JSON结构为 {"key": "value"}  
disp(jsonData.key);
% 读取XML文件  
filename = 'data.xml';  
xmlDoc = xmlread(filename); % 读取XML文件到XML文档对象  
  
% 访问XML数据(示例)  
% 这取决于你的XML结构,但通常你会使用类似findnodes这样的函数来查找特定的元素  
% elements = findnodes(xmlDoc, '//SomeElementName');  
% ...  
  
% 注意:这里只是展示了如何读取XML文件到XML文档对象,具体的数据访问取决于你的XML结构和需求

读取文件的一般步骤

  1. 打开文件:使用fopen函数打开文件,并获取文件标识符(fileID)。
  2. 读取数据:根据文件类型和数据格式,使用相应的函数读取数据。
  3. 关闭文件:使用fclose函数关闭文件,以释放系统资源。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值