首页/文章/ 详情

matlab一键式导入txt文件

1月前浏览454

概述

  当我们需要处理的txt数据非常复杂,每一行的数据没有任何规律的时候,需要我们手动写程序抽取数据,有时候甚至需要用到字符串匹配的正则表达式。
  但是如果我们的txt数据每一行的数据类型是一样的,而且每一行的数据个数和分割符号都是一样的,这时候就可以直接使用matlab提供的一键导入数据方法,而且matlab还能针对我们的数据生成定制化的函数,当下次再导入同一种txt数据的时候直接调用上一次生成的函数就行了。
  帖子讲述一种不编程导入外部txt文件的方法,而且matlab自动生成函数,方便后续重复导入相同类型的人数据。

matlab导入单元节点坐标

  针对规律的txt文件,matlab提供了一键导入功能,如下图框框中的部分  这里以读取abaqus生成的C3D8单元的信息为例。我首先将模型的节点坐标拷贝到了外部的txt文件中,如下图  节点坐标信息每一行四个数据,数据之间用英文的逗号分割。是一种规律的数据,可以使用matlab的“导入数据”功能,点击这个功能按钮,选择我们的txt文件并打开,打开后的默认选择为  上图中矩形框中的选项就是需要调整的,其中最重要的有:分割文件、等宽、输出类型,导入所选内容。下面挨个讲解。
  首先是分割文件和等宽,当我们打开数据时,默认是等宽,即matlab按照等宽度来分割识别txt中的数据,但是我们的节点坐标信息不符合等宽数据,那就调整到分割文件,以逗号形式,如下图所示  需要注意的是,我们的节点坐标信息是以逗号分割的,事实上分割文件的方式有很多种,如下图所示  如上图,matlab给我们提供了很多种选择,如:Tab键、逗号、空格和分号,甚至下面还有自定义分隔符,可以说matlab给我们导入数据提供了非常高的自由度。
  下面再来调整输出类型,这个功能的位置如下图  这里选择的是数值矩阵,可以看到matlab同样提供了很多种输出类型,还有:表、列向量、元胞数组和字符串数组
  然后就是具体的导入选项了,同样有很多种导出的选择,如下图  这里提供了四种导入选项,其中,导入数据是直接将数据导入到内存中,生成函数是matlab针对目前的txt文件数据生成特定的函数,方便后来直接调用,至于生成实时脚本和生成脚本,用的不是很多,就不多说了。
  这里首先展示直接导入数据后的效果,如下图所示,节点坐标信息直接导入到了matlab的内存中  如果我们选择了生成函数,matlab则会直接给出一个函数,我们可以直接复 制,今后再导入节点坐标信息的时候直接调用即可,如下图所示  全部的matlab程序为

function node = importfile(filename, dataLines)
%IMPORTFILE 从文本文件中导入数据
%  NODE = IMPORTFILE(FILENAME)读取文本文件 FILENAME 中默认选定范围的数据。  返回数值数据。
%
%  NODE = IMPORTFILE(FILE, DATALINES)按指定行间隔读取文本文件 FILENAME
%  中的数据。对于不连续的行间隔,请将 DATALINES 指定为正整数标量或 N×2 正整数标量数组。
%
%  示例:
%  node = importfile("C:\Users\nnn\Desktop\FEM\info\C3D8\node.txt", [1, Inf]);
%
%  另请参阅 READTABLE。
%
% 由 MATLAB 于 2024-12-21 20:11:09 自动生成

%% 输入处理

% 如果不指定 dataLines,请定义默认范围
if nargin < 2
    dataLines = [1, Inf];
end

%% 设置导入选项并导入数据
opts = delimitedTextImportOptions("NumVariables", 4);

% 指定范围和分隔符
opts.DataLines = dataLines;
opts.Delimiter = ",";

% 指定列名称和类型
opts.VariableNames = ["VarName1""VarName2""VarName3""VarName4"];
opts.VariableTypes = ["double""double""double""double"];

% 指定文件级属性
opts.ExtraColumnsRule = "ignore";
opts.EmptyLineRule = "read";

% 导入数据
node = readtable(filename, opts);

%% 转换为输出类型
node = table2array(node);
end

matlab导入单元节点信息

  下面我再读取C3D8单元的单元节点信息,六面体单元的节点信息如下图  每一行有九个数据,数据之间用逗号分割,是有规律的数据,可以用matlab的导入数据功能。将节点以导入数据的形式导入到内存后,在matlab中显示为  如果以生成函数的形式导入数据,则如下图所示  全部的代码为

function element = importfile(filename, dataLines)
%IMPORTFILE 从文本文件中导入数据
%  ELEMENT = IMPORTFILE(FILENAME)读取文本文件 FILENAME 中默认选定范围的数据。  返回数值数据。
%
%  ELEMENT = IMPORTFILE(FILE, DATALINES)按指定行间隔读取文本文件 FILENAME
%  中的数据。对于不连续的行间隔,请将 DATALINES 指定为正整数标量或 N×2 正整数标量数组。
%
%  示例:
%  element = importfile("C:\Users\nnn\Desktop\FEM\info\C3D8\element.txt", [1, Inf]);
%
%  另请参阅 READTABLE。
%
% 由 MATLAB 于 2024-12-21 20:33:49 自动生成

%% 输入处理

% 如果不指定 dataLines,请定义默认范围
if nargin < 2
    dataLines = [1, Inf];
end

%% 设置导入选项并导入数据
opts = delimitedTextImportOptions("NumVariables", 9);

% 指定范围和分隔符
opts.DataLines = dataLines;
opts.Delimiter = ",";

% 指定列名称和类型
opts.VariableNames = ["VarName1""VarName2""VarName3""VarName4""VarName5""VarName6""VarName7""VarName8""VarName9"];
opts.VariableTypes = ["double""double""double""double""double""double""double""double""double"];

% 指定文件级属性
opts.ExtraColumnsRule = "ignore";
opts.EmptyLineRule = "read";

% 导入数据
element = readtable(filename, opts);

%% 转换为输出类型
element = table2array(element);
end

  是不是还挺方便的!
  但是任何方法都都有它自己的适用范围,这种方式只能适用那些规则的数据,即每一行的数据个数相同,数据之间的分隔符号相同。如果是复杂的字符文本文件,那就非得用matlab的正则表达式进行字符操作了。

来源:有限元先生

AbaqusMATLABUM
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2024-12-26
最近编辑:1月前
外太空土豆儿
博士 我们穷极一生,究竟在追寻什么?
获赞 25粉丝 8文章 70课程 0
点赞
收藏
作者推荐

虚单元法——网格与非线性分析

个人介绍  本期帖子邀请到从事虚单元法(VirtualElementMethod,VEM)研究的优秀青年学者分享学术报告。徐兵兵,德国汉诺威大学博士后,洪堡学者,研究方向为计算力学数值算法,博士后导师为计算力学领域顶尖学者PeterWriggers院士。下面是详细的个人介绍。VEM简介  VEM是一种用于数值求解偏微分方程的新型方法,它的最大特点是可以使用多边形/多面体网格,从而针对复杂几何形状以及断裂、接触等问题时具有优势。它是有限元法(FEM)的推广,旨在克服传统有限元法在处理复杂几何形状和非标准单元网格时的某些局限性。  VEM是近年来提出的一种新的数值计算方法,主要用于解决复杂几何形状下的偏微分方程问题,尤其适用于计算力学、材料科学等领域。它可以被看作是有限元法(FEM)的扩展,但在处理复杂几何形状、断裂力学、接触力学、板壳等问题时更有优势。  以上内容来源于百度百科词条,想要了解详细内容,搜索百度百科:“虚单元法百度百科”,词条的主页为  与VEM相关的网页:https://www.vemhub.com/,里面包含VEM一些近期文献、动画示例、开源代码和有用的小工具等等。网页主页为  这里展示网页的Gallery页面的截图  这里面的图都是可以动态展示的,非常有意思,大家可以进网页里面看看。报告正文  帖子展示内容是:VirtualElementMethodfromMeshtoNonlinearProblems,内容非常丰富。  使用以下图片之前请务必联系作者本人,请尊重作者的劳动成果!作者的邮箱在文章中均可找到,找不到作者联系方式请联系我。来源:有限元先生

未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习计划 福利任务
下载APP
联系我们
帮助与反馈