2016-01-04 135 views
1

我想在一個目錄下的所有* .MAT文件轉換成相應的* .txt文件 例如,輸入:100.mat 輸出:100.txt將目錄中的所有* .mat文件轉換爲* .txt文件?

我用下面的代碼,

files = dir(‘*.mat’); 
for file = files' 
    mat = load(file.name); 
    % Do some stuff 
    %Conten = who; 
    save('file.txt', Conten{:}, '-ascii') 
end 

,但它會將所有行都返回到一個大文本文件或僅返回最後一個文件的內容。我想用相應的文件名將所有文件轉換爲* .txt。

+0

做你'.mat'文件包含cellarray'和/或'struct'類型的'變量? –

回答

1

一些基本的錯誤..... 小心保存功能,爲你指定爲:

保存( 'file.txt的',Conten {:}, '-ascii')

它表示將所有內容保存到file.txt中。因爲你得到了這個結果。 爲了保存到不同的文件中,您需要每次生成文件名。

something like these: 
files = dir('*.mat'); 
for file = files' 
    mat = load(file.name); 
    % Do some stuff; 
    %Conten = who; 
    save(strcat(file.name, '.txt'), Conten{:}, '-ascii'); 
end 
+0

如果「.mat」文件包含'cellarray'或'struct'變量,則不能簡單地將它們保存到具有'save'的ASCII文件中,因爲它不支持該數據類型。 –

+0

雖然這是真的,但我認爲這個問題是他已經成功地保存了文本(也許?),所以我給出了這個答案。 更重要的是,如果有類似cellarray或struct的東西,應該在%中去掉做某些事情; %Conten = who;並轉換成適當的字符串。 –

1
files = dir('*.mat'); 
for file = 1:files 
    mat = load(files(file).name); 
    % Do some stuff 
    %Conten = who; 
    F_current=files(file).name 
    F_name = strcat(a1(1:end-3),'txt') 
    save(F_name, Conten{:}, '-ascii') 
end 
相關問題