数据处理技巧(5):MATLAB 读取txt中的数据

全是数字的类型

txt 的数据是有数字的,如下图:
数据处理技巧(5):MATLAB 读取txt中的数据_第1张图片

% 读取结点坐标,保存在 NodeCoor 数组当中,共1331行3列
filename = 'F:\pg\opengl\AbaqusExercise\E1-1\datapro\Coord.txt'; % 记录文件路径
fileID = fopen(filename);   % 打开该路径文件
CellInput = textscan(fileID,'%d %f %f %f');  % 按照设置的格式读取列
fclose(fileID); % 关闭该路径文件

NodeCoor = zeros(1331,3);   % 创建一个数组,用来存储坐标
for i_cycle = 1:3
    NodeInfo = CellInput(1,i_cycle+1);           % 将cell中的第2~4列,也就是所有点的索引提取出来
    NodeCoor(:,i_cycle) = cell2mat(NodeInfo);  % 赋值给数组
end

数字+字符类型

除了处理数字和字符之外,还有重复的行需要剔除
数据处理技巧(5):MATLAB 读取txt中的数据_第2张图片

% 读取结点位移,保存在 NodeDIS 数组当中,共1331行3列
% 这里比较复杂,是因为同一点在txt中出现多行,而且每一行的数据相同
filename = 'F:\pg\opengl\AbaqusExercise\E1-1\datapro\NodeDIS.txt'; % 记录文件路径
fileID = fopen(filename);   % 打开该路径文件
CellInput = textscan(fileID,'%s %d %d %f %f %f');  % 按照设置的格式读取列
fclose(fileID); % 关闭该路径文件

NodeDIS = zeros(1331,3);   % 创建一个数组,用来存储坐标

NodeDISIndex = zeros(1331); % 记录每个点的索引在位移文件中第一次出现的行数

NodeInfo = CellInput(1,2);
NodeInfo = cell2mat(NodeInfo);  % 将cell类型转变成数组
index1331 = 1;
for i_cycle = 1:8000
    if NodeInfo(i_cycle)==index1331
        NodeDISIndex(index1331)=i_cycle;    % 记录每个点的索引在位移文件中第一次出现的行数
        index1331 = index1331+1;            % 点跳到下一个
    end
end 
for j_cycle = 1:3
    NodeInfo = cell2mat(CellInput(1,j_cycle+3));
    for i_cycle = 1:1331
        NodeDIS(i_cycle,j_cycle) = NodeInfo(NodeDISIndex(i_cycle));  % 赋值给数组
    end
end

最后保存提取的数据

save 'WY220416 Data.mat' NodeCoor NodeDIS;
clear; % 保存后清空工作区

你可能感兴趣的:(数据处理小技巧,matlab)