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);
importdata
函数、csvread
函数或readtable
函数读取。importdata
函数特别适用于读取包含混合数据类型(如数字和文本)的CSV文件。% 读取CSV文件
filename = 'data.csv';
data = readtable(filename); % 使用readtable读取为表格形式
% 或者
% data = csvread(filename); % 注意:csvread在较新版本的MATLAB中可能已被弃用
% data = importdata(filename);
% 对于混合数据类型,建议使用readtable
% 访问数据
disp(data);
xlsread
函数读取。但请注意,随着MATLAB版本的更新,xlsread
函数可能逐渐被淘汰,建议使用readtable
或readmatrix
等函数代替。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);
% 定义Excel文件名和工作表名称
filename = 'data.xlsx';
sheet = 'Sheet2'; % 想要读取名为'Sheet2'的工作表
% 使用readspreadsheet函数读取特定工作表
dataMatrix = readspreadsheet(filename, sheet);
% 显示读取的数据(可选)
disp('从特定工作表读取的Excel数据:');
disp(dataMatrix);
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);
% 注意:要播放整个视频,你需要在一个循环中读取每一帧并显示
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结构和需求
fopen
函数打开文件,并获取文件标识符(fileID)。fclose
函数关闭文件,以释放系统资源。