初次使用matlab导入txt文件

新建一个first.m,并且在同一个文件夹下储存想要导入的txt文件,文件中的数据需要用空格或者逗号隔开。打开编辑器并输入以下代码。

% 读取TXT文件数据
filename = 'your_file.txt'; % 替换为您的TXT文件名
data = importdata(filename);

% 将数据保存为MAT文件
save('output.mat', 'data');

需要运行此代码,先用ls确认已在此文件夹。”cd 文件夹” 是进入下一层,“cd..”指令返回上级。

运行完毕,就会在同一个文件夹生成命名为output.mat的文件。里面会出现一个1x1的struct。

但是,随着我的使用,发现了一个缺点。绝大部分的txt文件都包含表头,不只有data会出现在txt文件里。执行上面的代码会使得data和textdata被分开储存。

importdata 函数在读取文件时,如果文件包含数字和文本数据,它会返回一个结构体,其中包含两个字段:datatextdata。要将这些数据放在同一个表格中,您可以使用 table 函数将数字和文本数据合并为单个表格对象。以下是一个示例:

首先,从结构体中提取数据和文本数据: 

numericData = data.data; 
textData = data.textdata;

然后,将文本数据的第一行作为表格的列名,并将其余行与数字数据合并为一个表格对象:

% 提取列名
columnNames = textData(1, :);

% 提取文本数据的其余部分
textData = textData(2:end, :);

% 创建一个空表格,使用列名作为变量名
dataTable = array2table(numericData, 'VariableNames', columnNames);

% 将文本数据添加到表格中
for i = 1:size(textData, 2)
    dataTable.(columnNames{i}) = [textData(:, i); num2cell(dataTable{:, i})];
    dataTable.(columnNames{i})(1:size(textData, 1)) = [];
end

现在,dataTable 变量包含了一个表格对象,其中包含了数字和文本数据。您可以在工作空间中检查 dataTable,以查看合并后的数据。

这段代码的目的是从 textData 变量中提取列名和剩余的文本数据。textData 变量是一个包含文本数据的单元格数组,其中第一行通常是列名(表头),剩余的行是数据。

  1. columnNames = textData(1, :);

这行代码将 textData 的第一行(即所有列)作为列名提取出来。: 符号表示我们要获取所有列。结果将被存储在 columnNames 变量中。

  1. textData = textData(2:end, :);

这行代码将 textData 的剩余部分(从第二行到最后一行)提取出来。2:end 表示从第二行开始一直到最后一行。这将覆盖原始的 textData 变量,使其只包含不含列名的数据部分。

综上所述,这两行代码的主要作用是将 textData 的列名和数据部分分开处理,以便稍后将它们合并到一个表格中。

你可能感兴趣的:(matlab)