当我们加载数据要进行处理的时候,可能会要批量处理同类型数据文件。如果数据文件名不具有规律性的话,不方便设置规律加载,此时我们可以编程实现自动加载文件夹下的同类型所有文件,例如批量加载指定路径的文件夹下的所有xxx.txt、xxx.xlsx、xxx.jpg、xxx.png等等文件。
实例1 加载xxx.txt文件
E:matlabbinwork研究生微信公众号20220425的文件夹下有三个txt数据文件。文件名没有什么规律,里面随便写了数据。主要通过程序实现自动加载文件并进行处理和输出结果。
![importdata无法打开文件(matlab怎么读取data文件)](https://www.zun.com/zx/wp-content/themes/justnews/themer/assets/images/lazy.png)
![importdata无法打开文件(matlab怎么读取data文件)](https://www.zun.com/zx/wp-content/themes/justnews/themer/assets/images/lazy.png)
![importdata无法打开文件(matlab怎么读取data文件)](https://www.zun.com/zx/wp-content/themes/justnews/themer/assets/images/lazy.png)
![importdata无法打开文件(matlab怎么读取data文件)](https://www.zun.com/zx/wp-content/themes/justnews/themer/assets/images/lazy.png)
clc;clear all;close all;%一次性读取文件path ='E:matlabbinwork研究生微信公众号20220425';%自行确定文件路径data_list=dir(strcat(path,'*.txt'));%识别数据文件(txt)信息%注:如果是excel文件的话,上述的*.txt需要改为xlsx,%文件的路径可以直接粘贴复制得到,但要注意matlab的语法格式,如“”和‘’的区别:%确定文件数目;k = length(data_list);for j=1:k%(自行确定文件总数目) data_name = data_list(j).name;%获取数据文件命名 a{j,1}=importdata(data_name); %读取数据 %元胞数组是一种包含名为元胞的索引数据容器的数据类型 %其中的每个元胞都可以包含任意类型的数据。 %元胞数组通常包含文本列表、文本和数字的组合或者不同大小的数值数组。 %通过将索引括在圆括号 () 中可以引用元胞集。使用花括号 {} 进行索引来访问元胞的内容。enda{1,1}a{2,1}a{3,1}figure;plot(a{1,1}(1,:),a{1,1}(2,:),'r-');xlabel('x');figure;plot3(a{2,1}(1,:),a{2,1}(2,:),a{2,1}(3,:),'b-');xlabel('x');ylabel('y');zlabel('z');%输出for i = 1:k xlswrite(strcat("数据",strcat(num2str(i),".xlsx")),a{i,1});end
运行结果
![importdata无法打开文件(matlab怎么读取data文件)](https://www.zun.com/zx/wp-content/themes/justnews/themer/assets/images/lazy.png)
![importdata无法打开文件(matlab怎么读取data文件)](https://www.zun.com/zx/wp-content/themes/justnews/themer/assets/images/lazy.png)
同时生成了数据文件数据1.xlsx 、数据2.xlsx和数据3.xlsx
![importdata无法打开文件(matlab怎么读取data文件)](https://www.zun.com/zx/wp-content/themes/justnews/themer/assets/images/lazy.png)
实例2 加载xxx.xlsx文件
利用上个实例生成的三个excel数据文件,编程实现批量加载文件夹里面的指定类型文件。
![importdata无法打开文件(matlab怎么读取data文件)](https://www.zun.com/zx/wp-content/themes/justnews/themer/assets/images/lazy.png)
clc;clear all;close all;%一次性读取文件file_path ='E:matlabbinwork研究生微信公众号20220425';%自行确定文件路径data_list=dir(strcat(file_path,'*.xlsx'));%识别数据文件(txt)信息%注:如果是excel文件的话,上述的*.txt需要改为xlsx,%文件的路径可以直接粘贴复制得到,但要注意matlab的语法格式,如“”和‘’的区别:%确定文件数目;k = length(data_list);for j=1:k%(自行确定文件总数目) data_name = data_list(j).name;%获取数据文件命名 a{j,1}=xlsread(data_name); %读取数据 %元胞数组是一种包含名为元胞的索引数据容器的数据类型 %其中的每个元胞都可以包含任意类型的数据。 %元胞数组通常包含文本列表、文本和数字的组合或者不同大小的数值数组。 %通过将索引括在圆括号 () 中可以引用元胞集。使用花括号 {} 进行索引来访问元胞的内容。enda{1,1}a{2,1}a{3,1}%输出for i = 1:k xlswrite(strcat("输出数据",strcat(num2str(i),".xlsx")),a{i,1});end
运行结果
生成三个输出数据1,2,3的excel文件
![importdata无法打开文件(matlab怎么读取data文件)](https://www.zun.com/zx/wp-content/themes/justnews/themer/assets/images/lazy.png)
3.涉及的函数知识
3.1 strcat函数
水平串联字符串
语法
s=strcat(s1,...,sN)
说明
s=strcat(s1,...,sN) 水平串联其输入参数中的文本。每个输入参数都可以是字符数组、字符向量元胞数组或字符串数组。
如果任一输入是字符串数组,则结果是字符串数组。
如果任一输入是元胞数组,并且没有输入是字符串数组,则结果是字符向量元胞数组。
如果所有输入都是字符数组,则结果是字符数组。
对于字符数组输入,strcat 会删除尾部的 ASCII 空白字符:空格、制表符、垂直制表符、换行符、回车和换页符。对于元胞数组和字符串数组输入,strcat 不删除尾部空白。
%创建两个字符向量。使用 strcat 水平串联两个向量。
s1 = 'Good';
s2 = 'morning';
s = strcat(s1,s2)
s =
'Goodmorning'
%创建两个字符向量元胞数组。使用 strcat 水平串联两个元胞数组的元素
s1 = {'abcde','fghi'};
s2 = {'jkl','mn'};
s = strcat(s1,s2)
s = 1x2 cell
{'abcdejkl'} {'fghimn'}
%串联两个字符串数组
str1 = ["John ","Mary "];
str2 = ["Smith","Jones"];
str = strcat(str1,str2)
3.2 dir函数
列出文件夹内容
语法
dir
dir name
listing=dir(name)
说明
dir 列出当前文件夹中的文件和文件夹。
dir name 列出与 name 匹配的文件和文件夹。如果 name 为文件夹,dir 列出该文件夹的内容。
使用绝对或相对路径名称指定 name。name 参数的文件名可以包含 * 通配符,路径名称可以包含
* 和 ** 通配符。与 ** 通配符相邻的字符必须为文件分隔符。
listing = dir(name) 返回 name 的属性。
%列出文件夹的内容。
%创建文件夹 myfolder,其中包含文件 myfile1.m、myfile2.m 和 myfile3.m。
mkdir myfolder
movefile myfile1.m myfolder
movefile myfile2.m myfolder
movefile myfile3.txt myfolder
%列出 myfolder 中符合条件的文件。
cd myfolder
dir *my*.m
%列出当前文件夹中和当前文件夹的所有子文件夹中的所有文件。
%创建文件夹 myfolder1,其中包含以下文件和文件夹:
mkdir myfolder1
mkdir myfolder1/myfolder2
mkdir myfolder1/myfolder2/myfolder3
movefile myfile1.m myfolder1
movefile myfile2.m myfolder1/myfolder2
movefile myfile3.m myfolder1/myfolder2/myfolder3
%列出 myfolder1 中和 myfolder1 的子文件夹中扩展名为 .m 的所有文件。
cd myfolder1
dir **/*.m
Files Found in Current Folder:
myfile1.m
Files Found in: myfolder2
myfile2.m
Files Found in: myfolder2/myfolder3
myfile3.m
%在返回结构体中查找信息
%将 myfolder 的文件夹列表返回给变量 MyFolderInfo。
%创建文件夹 myfolder,其中包含文件 myfile1.m、myfile2.m 和 myfile3.m。
mkdir myfolder
movefile myfile1.m myfolder
movefile myfile2.m myfolder
movefile myfile3.m myfolder
%获取 myfolder 中文件的列表。MATLAB 以结构体数组形式返回信息。
MyFolderInfo = dir('myfolder')
MyFolderInfo = 5x1 struct array with fields:
name
folder
date
bytes
isdir
datenum
创建结构体索引以访问特定项目。
MyFolderInfo(3).name
要搜索多个文件,请在文件名中使用通配符。例如,dir *.txt 将列出当前文件夹中扩展名为 txt 的所有文件。要以递归方式搜索路径上的文件夹和子文件夹,请在路径名称中使用通配符。例如,dir */*.txt 列出正好是当前文件夹的下一级文件夹中扩展名为 txt 的所有文件,dir **/*.txt 列出当前文件夹下或其下多个文件夹中扩展名为 txt 的所有文件。与 ** 通配符相邻的字符必须为文件分隔符。
输出参数
字段名称 |
说明 |
类 |
name |
文件或文件夹名称 |
char |
folder |
文件或文件夹的位置 |
char |
date |
修改日期时间戳 |
char |
bytes |
文件大小(以字节为单位) |
double |
isdir |
如果名称为文件夹,则为 1;如果名称为文件,则为 0 |
logical |
datenum |
修改日期是一个日期序列值。 |
double |
本文内容来源于网络,仅供参考学习,如内容、图片有任何版权问题,请联系处理,24小时内删除。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至2705686032@qq.com 举报,一经查实,本站将立刻删除。原文转载: 原文出处: