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

全是数字的类型

txt 的数据是有数字的,如下图:
在这里插入图片描述

% 读取结点坐标,保存在 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

数字+字符类型

除了处理数字和字符之外,还有重复的行需要剔除
在这里插入图片描述

% 读取结点位移,保存在 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; % 保存后清空工作区
  • 7
    点赞
  • 71
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值