importdata无法打开文件(matlab怎么读取data文件)

当我们加载数据要进行处理的时候,可能会要批量处理同类型数据文件。如果数据文件名不具有规律性的话,不方便设置规律加载,此时我们可以编程实现自动加载文件夹下的同类型所有文件,例如批量加载指定路径的文件夹下的所有xxx.txt、xxx.xlsx、xxx.jpg、xxx.png等等文件。


实例1 加载xxx.txt文件

E:matlabbinwork研究生微信公众号20220425的文件夹下有三个txt数据文件。文件名没有什么规律,里面随便写了数据。主要通过程序实现自动加载文件并进行处理和输出结果。

importdata无法打开文件(matlab怎么读取data文件)

importdata无法打开文件(matlab怎么读取data文件)

importdata无法打开文件(matlab怎么读取data文件)

importdata无法打开文件(matlab怎么读取data文件)

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文件)

importdata无法打开文件(matlab怎么读取data文件)

同时生成了数据文件数据1.xlsx 、数据2.xlsx和数据3.xlsx

importdata无法打开文件(matlab怎么读取data文件)


实例2 加载xxx.xlsx文件

利用上个实例生成的三个excel数据文件,编程实现批量加载文件夹里面的指定类型文件。

importdata无法打开文件(matlab怎么读取data文件)

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文件)


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.mmyfile2.mmyfile3.mmkdir 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.mmyfile2.mmyfile3.mmkdir 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 举报,一经查实,本站将立刻删除。原文转载: 原文出处:

(0)
尊云-小张的头像尊云-小张
上一篇 2024 年 6 月 16 日 09:13
下一篇 2024 年 6 月 17 日 09:01

相关推荐

发表回复

登录后才能评论

联系我们

400-900-3935

在线咨询: QQ交谈

邮件:cong@zun.com

工作时间:365天无休服务 24小时在线

添加微信
即日起,购买尊云服务器除了可以享受活动折扣优惠,另外还可以获得宝塔专业版  >>点击进入