當(dāng)我們加載數(shù)據(jù)要進(jìn)行處理的時候,可能會要批量處理同類型數(shù)據(jù)文件。如果數(shù)據(jù)文件名不具有規(guī)律性的話,不方便設(shè)置規(guī)律加載,此時我們可以編程實(shí)現(xiàn)自動加載文件夾下的同類型所有文件,例如批量加載指定路徑的文件夾下的所有xxx.txt、xxx.xlsx、xxx.jpg、xxx.png等等文件。
實(shí)例1 加載xxx.txt文件
E:matlabbinwork研究生微信公眾號20220425的文件夾下有三個txt數(shù)據(jù)文件。文件名沒有什么規(guī)律,里面隨便寫了數(shù)據(jù)。主要通過程序?qū)崿F(xiàn)自動加載文件并進(jìn)行處理和輸出結(jié)果。




clc;clear all;close all;%一次性讀取文件path ='E:matlabbinwork研究生微信公眾號20220425';%自行確定文件路徑data_list=dir(strcat(path,'*.txt'));%識別數(shù)據(jù)文件(txt)信息%注:如果是excel文件的話,上述的*.txt需要改為xlsx,%文件的路徑可以直接粘貼復(fù)制得到,但要注意matlab的語法格式,如“”和‘’的區(qū)別:%確定文件數(shù)目;k = length(data_list);for j=1:k%(自行確定文件總數(shù)目) data_name = data_list(j).name;%獲取數(shù)據(jù)文件命名 a{j,1}=importdata(data_name); %讀取數(shù)據(jù) %元胞數(shù)組是一種包含名為元胞的索引數(shù)據(jù)容器的數(shù)據(jù)類型 %其中的每個元胞都可以包含任意類型的數(shù)據(jù)。 %元胞數(shù)組通常包含文本列表、文本和數(shù)字的組合或者不同大小的數(shù)值數(shù)組。 %通過將索引括在圓括號 () 中可以引用元胞集。使用花括號 {} 進(jìn)行索引來訪問元胞的內(nèi)容。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("數(shù)據(jù)",strcat(num2str(i),".xlsx")),a{i,1});end
運(yùn)行結(jié)果


同時生成了數(shù)據(jù)文件數(shù)據(jù)1.xlsx 、數(shù)據(jù)2.xlsx和數(shù)據(jù)3.xlsx

實(shí)例2 加載xxx.xlsx文件
利用上個實(shí)例生成的三個excel數(shù)據(jù)文件,編程實(shí)現(xiàn)批量加載文件夾里面的指定類型文件。

clc;clear all;close all;%一次性讀取文件file_path ='E:matlabbinwork研究生微信公眾號20220425';%自行確定文件路徑data_list=dir(strcat(file_path,'*.xlsx'));%識別數(shù)據(jù)文件(txt)信息%注:如果是excel文件的話,上述的*.txt需要改為xlsx,%文件的路徑可以直接粘貼復(fù)制得到,但要注意matlab的語法格式,如“”和‘’的區(qū)別:%確定文件數(shù)目;k = length(data_list);for j=1:k%(自行確定文件總數(shù)目) data_name = data_list(j).name;%獲取數(shù)據(jù)文件命名 a{j,1}=xlsread(data_name); %讀取數(shù)據(jù) %元胞數(shù)組是一種包含名為元胞的索引數(shù)據(jù)容器的數(shù)據(jù)類型 %其中的每個元胞都可以包含任意類型的數(shù)據(jù)。 %元胞數(shù)組通常包含文本列表、文本和數(shù)字的組合或者不同大小的數(shù)值數(shù)組。 %通過將索引括在圓括號 () 中可以引用元胞集。使用花括號 {} 進(jìn)行索引來訪問元胞的內(nèi)容。enda{1,1}a{2,1}a{3,1}%輸出for i = 1:k xlswrite(strcat("輸出數(shù)據(jù)",strcat(num2str(i),".xlsx")),a{i,1});end
運(yùn)行結(jié)果
生成三個輸出數(shù)據(jù)1,2,3的excel文件

3.涉及的函數(shù)知識
3.1 strcat函數(shù)
水平串聯(lián)字符串
語法
s=strcat(s1,...,sN)
說明
s=strcat(s1,...,sN) 水平串聯(lián)其輸入?yún)?shù)中的文本。每個輸入?yún)?shù)都可以是字符數(shù)組、字符向量元胞數(shù)組或字符串?dāng)?shù)組。
如果任一輸入是字符串?dāng)?shù)組,則結(jié)果是字符串?dāng)?shù)組。
如果任一輸入是元胞數(shù)組,并且沒有輸入是字符串?dāng)?shù)組,則結(jié)果是字符向量元胞數(shù)組。
如果所有輸入都是字符數(shù)組,則結(jié)果是字符數(shù)組。
對于字符數(shù)組輸入,strcat 會刪除尾部的 ASCII 空白字符:空格、制表符、垂直制表符、換行符、回車和換頁符。對于元胞數(shù)組和字符串?dāng)?shù)組輸入,strcat 不刪除尾部空白。
%創(chuàng)建兩個字符向量。使用 strcat 水平串聯(lián)兩個向量。
s1 = 'Good';
s2 = 'morning';
s = strcat(s1,s2)
s =
'Goodmorning'
%創(chuàng)建兩個字符向量元胞數(shù)組。使用 strcat 水平串聯(lián)兩個元胞數(shù)組的元素
s1 = {'abcde','fghi'};
s2 = {'jkl','mn'};
s = strcat(s1,s2)
s = 1x2 cell
{'abcdejkl'} {'fghimn'}
%串聯(lián)兩個字符串?dāng)?shù)組
str1 = ["John ","Mary "];
str2 = ["Smith","Jones"];
str = strcat(str1,str2)
3.2 dir函數(shù)
列出文件夾內(nèi)容
語法
dir
dir name
listing=dir(name)
說明
dir 列出當(dāng)前文件夾中的文件和文件夾。
dir name 列出與 name 匹配的文件和文件夾。如果 name 為文件夾,dir 列出該文件夾的內(nèi)容。
使用絕對或相對路徑名稱指定 name。name 參數(shù)的文件名可以包含 * 通配符,路徑名稱可以包含
* 和 ** 通配符。與 ** 通配符相鄰的字符必須為文件分隔符。
listing = dir(name) 返回 name 的屬性。
%列出文件夾的內(nèi)容。
%創(chuàng)建文件夾 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
%列出當(dāng)前文件夾中和當(dāng)前文件夾的所有子文件夾中的所有文件。
%創(chuàng)建文件夾 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 的子文件夾中擴(kuò)展名為 .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
%在返回結(jié)構(gòu)體中查找信息
%將 myfolder 的文件夾列表返回給變量 MyFolderInfo。
%創(chuàng)建文件夾 myfolder,其中包含文件 myfile1.m、myfile2.m 和 myfile3.m。
mkdir myfolder
movefile myfile1.m myfolder
movefile myfile2.m myfolder
movefile myfile3.m myfolder
%獲取 myfolder 中文件的列表。MATLAB 以結(jié)構(gòu)體數(shù)組形式返回信息。
MyFolderInfo = dir('myfolder')
MyFolderInfo = 5x1 struct array with fields:
name
folder
date
bytes
isdir
datenum
創(chuàng)建結(jié)構(gòu)體索引以訪問特定項(xiàng)目。
MyFolderInfo(3).name
要搜索多個文件,請?jiān)谖募惺褂猛ㄅ浞?。例如,dir *.txt 將列出當(dāng)前文件夾中擴(kuò)展名為 txt 的所有文件。要以遞歸方式搜索路徑上的文件夾和子文件夾,請?jiān)诼窂矫Q中使用通配符。例如,dir */*.txt 列出正好是當(dāng)前文件夾的下一級文件夾中擴(kuò)展名為 txt 的所有文件,dir **/*.txt 列出當(dāng)前文件夾下或其下多個文件夾中擴(kuò)展名為 txt 的所有文件。與 ** 通配符相鄰的字符必須為文件分隔符。
輸出參數(shù)
字段名稱 |
說明 |
類 |
name |
文件或文件夾名稱 |
char |
folder |
文件或文件夾的位置 |
char |
date |
修改日期時間戳 |
char |
bytes |
文件大?。ㄒ宰止?jié)為單位) |
double |
isdir |
如果名稱為文件夾,則為 1;如果名稱為文件,則為 0 |
logical |
datenum |
修改日期是一個日期序列值。 |
double |
本文內(nèi)容來源于網(wǎng)絡(luò),僅供參考學(xué)習(xí),如內(nèi)容、圖片有任何版權(quán)問題,請聯(lián)系處理,24小時內(nèi)刪除。
版權(quán)聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn),該文觀點(diǎn)僅代表作者本人。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如發(fā)現(xiàn)本站有涉嫌抄襲侵權(quán)/違法違規(guī)的內(nèi)容, 請發(fā)送郵件至2705686032@qq.com 舉報(bào),一經(jīng)查實(shí),本站將立刻刪除。原文轉(zhuǎn)載: 原文出處: