1. 程式人生 > >MATLAB讀取資料夾中的批量影象

MATLAB讀取資料夾中的批量影象

1.Matlab使用dir函式獲得指定資料夾下的所有子資料夾和檔案,並存放在在一種為檔案結構體陣列中.

dir函式可以有呼叫方式
dir('.') 列出當前目錄下所有子資料夾和檔案
dir('G:\Matlab') 列出指定目錄下所有子資料夾和檔案
dir('*.m') 列出當前目錄下符合正則表示式的資料夾和檔案

得到的為結構體陣列每個元素都是如下形式的結構體
        name    -- filename
        date    -- modification date
        bytes   -- number of bytes allocated to the file
        isdir   -- 1 if name is a directory and 0 if not
        datenum -- modification date as a MATLAB serial date number
分別為檔名,修改日期,大小,是否為目錄,Matlab特定的修改日期

以下批量讀取檔案的前提是:所有影象都是灰度影象,大小為256*256

cd ('D:\picture\test');

files=dir('*.jpg');
m=size(files,1);
G=zeros(256,256,m);
for i=1:m
G(:,:,i)=imread(files(i).name);

end

現在有一個資料夾 裡面有50個左右的txt檔案 每個檔案大概三萬行 兩列 第一列是字串 第二列是浮點數字

我只需要讀第二列

現在我想寫一個.M檔案 批量讀取這個資料夾裡的txt檔案 讀取完以後的陣列變數名就是txt的檔名

現在問題:
1 MATLAB如何遍歷一個資料夾裡的所有函式
2 如果按照檔名建立一個變數?
最佳答案
<span style="background-color: rgb(255, 255, 255);">比如說在E:\new下有一系列txt檔案,檔名符合matlab變數名的命名規則,並且沒有temp.txt檔案,每個檔案有兩列,以空格分割,第一列是字串,第二列是浮點數字,要讀取第二列的浮點數字為陣列並以檔名為變數名。

file=dir('E:\new\*.txt');
for n=1:length(file)
    temp=dlmread(['E:\new\',file(n).name],' ',0,1);
    eval([file(n).name(1:end-4),'=temp;'])
end</span>