Matlab中從資料夾中批量讀取檔案的做法

2021-09-30 03:57:11 字數 1725 閱讀 1543

function [read_data]=batch_read_file(file_type);

% <<---檔案已完成,程式已修正--->>

%   可以讀取的檔案中,若有列數不相同的,則補 nan

%   資料檔案中只能是數字

%   *.xls 檔案只能是英文或數字命名

% 批量讀資料的程式 注,只能讀取 *.txt類檔案,且檔案必須有字尾名

% [read_data_a]=batch_read_file('*.txt')

% [read_data_a]=batch_read_file('*.xls')

% file_type為檔案的格式

% 返回值 read_data 為元胞數值,儲存謀取到的資料

% 對 xls 檔案的說明:

% xls 檔案以檔名公升序排序

% xls 檔案只能容許乙個工作表,若有多個,則讀取的為名字值最大的乙個工作表

% file_type='*.txt'類 or file_type='*.xls';

%   示例:在資料檔案中有如下內容 1.txt

%   1 2 3.345 1234.5422 12

%   1.2222 2.3333 3.4444

%   1 2 3 4 5 6 7 8 9

%   讀出的資料是乙個 (3,9)的矩陣 空缺的部分為 nan

file_read=dir(file_type);% 獲得要讀取的檔案列表

%%%%%%%%%%%%%-+-xls xls xls xls xls-+-%%%%%%%%%

% 在此段讀取 *.xls 類檔案

if strcmp(file_type,'*.xls')

for i=1:length(file_read)

file_name=file_read(i).name;% 獲取檔名的列表

% 開始準備向從 xls 檔案中讀取資料

read_data=xlsread(file_name);

endelse

%%%%%%%%%%%%%-+-txt txt txt txt txt-+-%%%%%%%%%

% 在此段讀取 *.txt 類檔案

for i=1:length(file_read)

file_name=file_read(i).name;

fid=fopen(file_name,'r');

% 開始準備向從檔案中讀取資料

k=1;

while ~feof(fid)           

% 這兒用fgetl似乎也沒有錯

temp=fgets(fid);          

length_temp_data(k)=length(str2num(temp));% 求長度

temp_read_data=str2num(temp);%   寫

%%%%%%%%

k=k+1;

end%%-----

max_row=max(length_temp_data);% 求最大的長度,以確定補 nan 的個數

%%%%%%

for j=1:k-1

len=length(temp_read_data);

if lentemp_read_data(len:max_row)=nan;

endread_data(j,:)=temp_read_data;

end

fclose(fid);

endend

matlab批量讀取資料夾中的檔案做後續處理

讀取c盤dataset資料夾中的.mat檔案為例 finf dir c dataset mat 根據資料夾中的檔案格式,選擇讀取型別,如.jpg mat等。其中finf是乙個結構體陣列,包含的dataset下所有mat檔案的名稱 修改時 間大小 是否資料夾等屬性。n length finf 陣列大小...

批量刪除資料夾中的 svn資料夾

記事本 輸入 之間的文字,注意最下面有個回車換行 windows registry editor version 5.00 hkey local machine software classes folder shell deletesvn delete svn floder hkey local ...

批量讀取資料夾中的檔名

dir b list.txtimport os path 資料夾路徑 待讀取的資料夾 path list os.listdir path path list.sort 對讀取的路徑進行排序 for filename in path list print os.path.join path,filen...