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

此外,也可根据以下命令导入后缀仅为.xls数据

folder = 'your_directory';                     % 设置要查询的目录路径
files = dir(fullfile(folder,'*.xls'));            % 获取该目录下所有后缀为.xls的文件信息

案例1:含中文表头的数据文件

在此列举一种比较复杂的情况,有中文表头的数据文件(在此列举滚动轴承的信号数据,数据量比较大):
在此列举滚动轴承的信号数据,数据量比较大

1.fopen搭配textscan

file=fullfile(pathname, filename);      % 导入.txt文件
f=fopen(file);    %以只读模式打开混合格式文本文件
dt=textscan(f,'%s');         %采用textscan 读取数据

对于数据量大的文本文件推荐使用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

得到结果如下:
在这里插入图片描述

在这里插入图片描述

2.利用impordata导入数据

datatable = importdata(file);                %加载txt数据(只导入数据)
data = datatable.data;                           %读取非元胞的数据

此代码只导入数据,格式与.txt文本文件相同,与上一方法经过转换后得到的格式相同,如下图所示,对于只导入数据的文本文件十分简便。
在这里插入图片描述

3.采用load函数

貌似只能导入数据文件,这个不是十分清楚。

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

案例2:含不同分隔符的数据

以全球人工不透水面积GAIA的名称文件为例,数据格式如下:
在这里插入图片描述

1.采用load函数

若利用load函数直接导入,只能得到FID、Id和fName_ID的前部分,结果如下:
在这里插入图片描述

2.使用导入数据更改分隔符

点击导入数据后,添加“_”分隔符,即可将数据导入。
在这里插入图片描述

第一篇文章就这样吧!以后要继续加油噢!奥里给!
在这里插入图片描述

  • 59
    点赞
  • 257
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
对于文本文件中的点云数据,您可以使用MATLAB文件读取和拟合函数来进行曲线拟合。下面是一个简单的步骤示例: 1. 导入数据:使用`importdata`函数将点云数据从文本文件中读取到MATLAB中。 ```matlab data = importdata('点云.txt'); ``` 2. 提取自变量和因变量:根据文本文件的格式,提取自变量和因变量的数据。 ```matlab x = data(:, 1); % 自变量 y = data(:, 2); % 因变量 ``` 3. 拟合曲线:选择合适的拟合函数,例如一次或多次多项式拟合。使用`polyfit`函数进行拟合,其中第一个参数是自变量,第二个参数是因变量,第三个参数是拟合的多项式次数。 ```matlab degree = 2; % 选择拟合多项式的次数 coefficients = polyfit(x, y, degree); ``` 4. 绘制拟合曲线:使用`polyval`函数计算拟合曲线上的点,并使用`plot`函数绘制原始数据点和拟合曲线。 ```matlab x_fit = linspace(min(x), max(x), 100); % 生成拟合曲线上的点 y_fit = polyval(coefficients, x_fit); % 计算拟合曲线上的因变量值 plot(x, y, 'ro'); % 原始数据点 hold on; plot(x_fit, y_fit, 'b-'); % 拟合曲线 legend('原始数据', '拟合曲线'); xlabel('自变量'); ylabel('因变量'); ``` 这个示例假设您的文本文件中有两列数据,第一列是自变量,第二列是因变量。您可以根据实际情况进行调整。同样地,您还可以尝试不同的拟合函数和多项式次数来获得更好的拟合效果。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

WW、forever

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值