MATLAB 如何导入.txt文本 | 您所在的位置:网站首页 › matlab的load加载路径 › MATLAB 如何导入.txt文本 |
在matlab GUI的学习中,需要导入各种格式的.txt文件,心血来潮想总结一波。 首先,利用uigetfile选择文件位置,代码命令如下: [filename, pathname] = uigetfile({'*.xls;';'*.txt';'*.xlsx;'; }, '导入数据',... 'MultiSelect','off'); % 不允许同时选择多个文件 if isequal(filename,0) disp('User selected Cancel') else disp(['User selected', fullfile(pathname, filename)]) %当返回了一个文件的时候,可以用fullfile将路径和文件名组合起来 end案例:含中文表头的数据文件在此列举一种比较复杂的情况,有中文表头的数据文件(在此列举滚动轴承的信号数据,数据量比较大): 对于数据量大的文本文件推荐使用textscan,不推荐使用textread函数读取数据。 在此种情况下,导入的数据格式如下: 可以自行调整得到文本及数据。代码如下(可能不甚高明,欢迎小伙伴指教): 因为涉及到cell型数据向double类型的数据转换,略有一丢丢麻烦。 FaultLayer=dt{1,1}(1:f); A=transpose(str2num(char(dt{1,1}(f+1:end)))); for ilength=1:(length(dt{1,1})/f-1) data(ilength,1:4)=A((ilength-1)*f+1:ilength*f); end得到结果如下: 此代码只导入数据,格式与.txt文本文件相同,与上一方法经过转换后得到的格式相同,如下图所示,对于只导入数据的文本文件十分简便。 貌似只能导入数据文件,这个不是十分清楚。 file=fullfile(pathname, filename); % 导入.txt文件 num=load(file) ; [m,n]=size(num);导入的数据如下图所示: 最后提醒一点,当导入.txt文本时,中文出现乱码时,在前面添加以下代码即可解决。 feature('DefaultCharacterSet', 'UTF8'); % 使得matlab支持utf-8编码另外,我之前编写GUI代码的时候,对于可以导入.txt和.xls的多种文件格式的处理感到十分疑惑,具体的数据处理并不相同,如何才能区别导入的是何种文件呢?最后我瞎搞,弄了一个复杂的方法解决,希望有小伙伴告诉我怎么解决(期待.jpg) if isempty(findstr(filename,'.txt'))==0 % 为空,结果为1 feature('DefaultCharacterSet', 'UTF8'); % 使得matlab支持utf-8编码 file=fullfile(pathname, filename); % 导入.txt文件 f=fopen(file); %以只读模式打开混合格式文本文件,列数 dt=textscan(f,'%s'); %采用textscan 读取数据 FaultLayer=dt{1,1}(1:f); A=transpose(str2num(char(dt{1,1}(f+1:end)))); for ilength=1:(length(dt{1,1})/f-1) data(ilength,1:4)=A((ilength-1)*f+1:ilength*f); end flag_load=true; else if (isempty(findstr(filename,'.xlsx'))==0||isempty(findstr(filename,'.xls'))==0 ) [num,txt,raw] = xlsread(filename,-1); %导入.xlsx文件 或.xls文件 [m,n]=size(num); flag_load=true; else string=strcat(pathname,filename); errordlg(string+"读取失败,请检查文件格式!",'错误提示'); end end我是WW@WWforever,一个在CSDN拥有1.2W粉丝@WW、forever且热衷分享能源、水利、电气实用干货(论文复现、科研绘图、学术写作、分析方法等)的科研民工,您的点赞、收藏和关注是对我最大的支持! |
今日新闻 |
推荐新闻 |
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 |