matlab讀取文件夾
⑴ Matlab批量讀取一個文件夾里的txt文件
Matlab批量讀取一個文件夾里的txt文件的方法。
如下參考:
1.首先,在這里舉例製作一個txtde文本文件,如下面頁面的內容。
⑵ 如何使用matlab讀取多層文件夾中的所有數據文件
方法/步驟
獲取第一層文件夾下的所有文件夾以及數據信息結構體。
例如:主路徑是SourcePath
可以通過相對路徑代碼cd(SourcePath);File1NameFormation=dir('*.')獲取當前路徑下所有文件夾信息並且將文件夾信息保存在File1NameFormation中。也可以使用絕對路徑:File1NameFormation=dir('SourcePath\*.');對於需要列出什麼類型的文件可以通過將'*.'改成'*.xxx';其中XXX為類型文件擴展名
對路徑擴展進行計數,循環進行分文件夾讀取
File1Number=numel(File1NameFormation);或者File1Number=size(File1NameFormation,1);通過獲取當前文件夾中有多少層文件夾。
對得到的文件夾通過計數進行循環,進入次文件夾一次繼續讀取文件。
但是這里需要注意的是,如果是文件夾需要從第三個文件夾讀取,因為'.'和'..'一個為當前文件夾一個為上一層文件夾,所以需要從第三個文件讀取,可以通過第二個返回上一層文件夾。
可以發現進入子文件後就進入循環了,返回了第一步。在這里可以整合所有的代碼
cd(SourcePath)
File1NameFormation=dir('*.');
File1Number=numel(File1NameFormation)
for LoopFile1Number=3:File1Number
NowPath=fullfile(SourcePath,File1NameFormation(LoopFile1Number).name
......................
end
回顧整個過程,重復寫的代碼很多,在這里我們可以通過運用遞歸的思維寫一個讀取數據代碼。
這里通過循環來寫讀取文件函數。
function ReadFile(MainPath,FileType,FileLayer)
%%%%%%%%%%%%%%
%MainPath為主路徑,FileType為需要讀取的文件類型,FileLayer為文件類型在哪一層文件下
cd(MainPath);
if(FileLay>=0)
PathFileFormation=dir('*.');
PathNumber=numel(PathFileFormation);
for LoopPathNumer=3:PathNumber
Path=fullfile(MainPath,PathFileFormation(LoopPathNumber).name);
ReadFile(Path,FileType,FileLayer-1)
end
else
PathFileFormation=dir('FileType');
PathNumber=numel(PathFileFormation);
for LoopPathNumer=3:PathNumber
Path=fullfile(MainPath,PathFileFormation(LoopPathNumber).name)
end
end
⑶ 用MATLAB如何讀取一個文件夾里的圖片
1、查看圖片所在的位置。
⑷ Matlab文件夾、文件、讀取操作(匯總)
在Windows中,「D:\」表示D盤,「D:」表示目錄
還可以查找特定後綴的文件:
如: dir(['fk\','*.jpg']) 表示查找 fk文件夾下後綴為 ' .jpg' 的文件
若 fk 目錄下存在後綴為'.jpg' 的文件,則返迴文件名:
1260500466587.jpg 1260500472025.jpg 8673601d.jpg
否則返回: fk.\*.jpg not found.
其中dirname是要查找的路徑的名字,路徑在matlab的搜索路徑內時,沒有必要輸入全名,只輸入最後或最後兩級就夠了。
fopen ('filename', 'mode')
mode格式有:
『r』:只讀方式打開文件(默認的方式),該文件必須已存在。
『r+』:讀寫方式打開文件,打開後先讀後寫。該文件必須已存在。
『w』:打開後寫入數據。該文件已存在則更新;不存在則創建。
『w+』:讀寫方式打開文件。先讀後寫。該文件已存在則更新;不存在則創建。
『a』:在打開的文件末端添加數據。文件不存在則創建。
『a+』:打開文件後,先讀入數據再添加數據。文件不存在則創建。 如果rt表示該文件以文本方式打開,如果添加的是「b」,則以二進制格式打開,這也是fopen函數默認的打開方式。
Fopen函數兩個返回值:
fclose(f)
f為打開文件的標志,若fclose函數返回值為0,則表示成功關閉f標志的文件;若返回值為–1,則表示無法成功關閉該文件。
若要一次關閉打開的所有文件,可以使用下面的命令:fclose all
MATLAB自帶的MAT文件為二進制文件,但為了便於和外部程序進行交換以及方便查看文件中的數據,也常常採用文本數據格式(數據採用ASCII碼格式,可以表示字母和數字字元)與外界進行數據交換。
函 數 | csvread| dlmread| fscanf| load| textread|
-|-|-
數 據 類 型| 數值數據| 數值數據| 字母和數值| 數值數據| 字母和數值|
分 隔 符| 僅cooma| 任何字元| 任何字元| 僅space| 任何字元|
返 回 值| 1| 1| 1| 1| 多返回值
如: A=load('my_data.txt');
如果想把4列數據全部讀取出放在4個變數中,則使用如下命令:
>> [name gra grades answer]=textread('my_exam.dat','%s %s %f %s')
函 數| csvwrite| diary| dlmwrite| fprintf| save
-|-|-
數 據 類 型| 數值數據| 數值數據或單元陣列| 數值數據| 字母和數值數據| 數值數據
分 隔 符| 逗號| 空格| 任何字元| 任何字元| 製表符或空格符
存寫有分隔符的ASCII碼數據文件 若要將當前的MATLAB工作空間的一個或多個變數寫到一個有分隔符的ASCII碼文件中,可以使用save命令或dlmwrite函數。在默認情況下,save命令是以 MAT 格式存寫數據的。
作用 | 標志 | 例子
-|-
左對齊 | ' - ' | %-5.2f
列印符號字元(+或 - ) | '+' | %+5.2f
插入空格| ' ' | % 5.2f
墊零 | '0' | %05.2f
對%o, %x, %X, 列印 0,0x,0X的前綴。
對%f, %e, %E, 列印小數點,即使是0。
對%g, %G,不刪除或尾部的零或小數點。 | '#' | %#5.0f
例: 創建一個2×2的魔方矩陣,然後打開一文件,寫入數據。
fseek frewind
設定指針位置重設指針到文件起始位置
ftell feof
獲得指針位置測試指針是否在文件結束位置
⑸ 怎樣用matlab讀取一個文件夾下的多個子文件夾中的多個jpg圖片,急用啊~~~
這個簡單,參考如下:
imgPath='E:/imageData/';%圖像庫路徑
imgDir=dir([imgPath'*.jpg']);%遍歷所有jpg格式文件
fori=1:length(imgDir)%遍歷結構體就可以一一處理圖片了
img=imread([imgPathimgDir(i).name]);%讀取每張圖片
(5)matlab讀取文件夾擴展閱讀:
需要先遍歷所有子文件夾,然後依次再遍歷每個子文件夾下的圖片,程序如下。
imgDataPath='E:/imageData/';
imgDataDir=dir(imgDataPath);%遍歷所有文件
fori=1:length(imgDataDir)
if(isequal(imgDataDir(i).name,'.')||...%去除系統自帶的兩個隱文件夾
isequal(imgDataDir(i).name,'..')||...
~imgDataDir(i).isdir)%去除遍歷中不是文件夾的
continue;
end
imgDir=dir([imgDataPathimgDataDir(i).name'/*.jpg']);
forj=1:length(imgDir)%遍歷所有圖片
img=imread([imgDataPathimgDataDir(i).name'/'imgDir(j).name]);
end
end
ImgDir返回一個包含每個圖像名稱、日期、位元組、isdir和datenum的結構。一般情況下,我們只需要用圖片的名稱來完成圖片的遍歷工作