MATLAB数据处理:批量导入txt文件方法

    最近编了一个labview程序自动读取光功率计的值。一轮测试下来存了180个txt类型的数据文档。一个一个文档用origin数据处理的话太浪费时间了。想起以前本科将txt导入到matlab处理过数据,想着就去网上看看有没有批量处理txt文档的办法。

    下面是我通过学习网上他人的经验总结归纳的一个办法,本人很少用matlab,有更优化的编法的话请大家评论区多指教。具体代码可以直接划到最下方

    我先说一下我的需求,180个txt文档每个文档对应一个四分之一波片角度,每个文档中有一一对应的线偏振角度和光功率的两类数据。我需要找到光功率方差最小的那几组数据,对应的文档编号就是我实验所需要的四分之一波片角度。

txt文档和具体数据示例

        首先需要用到一个函数是dir。他的作用是列出路径文件夹下的所有内容,以结构体数组形式返回信息;可以通过结构体去调用获取某个具体文档的信息,比如文档名,文档大小等;通过 * 可以指定dir读取列出含有特定字符或者特定类型的文件。看一下matlab的官方注释。

dir函数的返回值

dir的指定读取用法

    应用到我这里的场景,代码就是 FileList = dir('D:\data\202111216\*.txt');其中D:\data\202111216\ 是路径,*.txt指定列出该路径下的所有.txt文件。后文通过 filename = FileList(k).name在循环中调用得到每个文档的名字,在通过load函数将数据导入进事先准备好的cell元胞数组中。

    这里需要在简单介绍下cell数据类型,cell是一个元胞数组,cell中每个元胞都可以包含任意类型的数据,比如文本列表、数组等等。这里我们每个元胞导入了一个txt文档内的数据数组。

cell数据展示

    接着在for循环中,就像调用数组数据一样调用cell元胞,只不过对cell需要使用大括号{}。由于引用的数据是一个数组,又可以在大括号{}后面加小括号()调用数组内的元素。具体代码表示y{k}=x{k}(:,2);

    由此我单独提取出来了光功率的值(txt中的第二列数据),并通过var函数求得了方差,完成任务。

    在此代码基础上,大家可以扩充自己的代码,进行计算、画图、数据拟合等进一步操作。

    具体代码如下,谢谢大家!

close all
clear all
clc

FileList = dir('D:\data\202111216\*.txt');

N = size(FileList,1);

x=cell(N,1);

y=cell(N,1);

z=zeros(N,1);

for k = 1:N

   % get the file name:

   filename = FileList(k).name;

   disp(filename)

   %在下面插入你对每个文件要执行的脚本:

   x{k}=load(['D:\data\202111216\' filename]);

   y{k}=x{k}(:,2);

   z(k)=var(y{k});

end

QR Code
微信扫一扫,欢迎咨询~

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 155-2731-8020
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

手机不正确

公司不为空