2015-04-30 149 views
0

我已經創建了一個腳本來在我的工作區中創建~300個變量名。我需要將這些.mat文件保存爲.txt文件 - 有什麼方法可以在某種循環中調用這些變量,或者將它們一次全部保存爲.txt文件?將多個.mat文件從工作區保存到.txt文件

它們都是不同大小的單元格,平均大約爲1000x5。 數據的第一行包含字符串,其他元素都是非整數。

這裏是.MAT的一個示例文件 -

http://www.yourfilelink.com/get.php?fid=1065782

我不知道一大堆有關Matlab的所以任何幫助將非常感激!謝謝。

+1

您需要說明這些.txt文件需要什麼。他們是否必須與另一個程序進行交互?他們是否應該採用特定的格式?你打算在未來將它讀回Matlab嗎? – Setsu

+1

爲什麼一個文本文件? – siliconwafer

+0

對此缺乏澄清感到抱歉!我需要將.txt文件作爲與.mat文件具有相同尺寸的表格導入到Mathematica中 –

回答

0

一種可能的解決方案可以是:

.mat文件通過一個循環裝載(該文件的名可以是動態地從一個列表中生成或讀)

提取的第一行cellarray(字符串),並通過使用dlmwrite函數

以去除所述第一行和(與dlmwrite再次)寫的數值在具有.txt它寫在一個.txt文件轉換他們使用cell2mat函數。在寫入數值時,precision必須小心設置。

file_name_root='x2413'; 
% dummy loop (one iteration) just to test dynamic filename generation 
for i=3:3 
    % generate the name of the input file 
    input_file_name=[file_name_root int2str(i)]; 
    % generate the name of the output file 
    output_file_name=[file_name_root int2str(i) '.txt']; 
    % extract the name of the cellarray and assign it to "the_cell" variable 
    tmp=load(input_file_name); 
    var_name=char(fieldnames(tmp)); 
    eval(['the_cell=tmp.' var_name ';']) 
    [r,c]=size(the_cell); 
    str=''; 
    % get the first row string (probably a cleaver way to do it exists) 
    for i=1:c 
     str=[str ' ' char(the_cell(1,i))]; 
    end 
    % print the first row in a ".txt" file 
    dlmwrite(output_file_name,sprintf('%s',str),'delimiter','') 
    % remove the first row 
    the_cell(1,:)=[]; 
    % write the numerical values in the ".txt" file 
    % the "precision" shall be carefully set 
    dlmwrite(output_file_name,cell2mat(the_cell),'precision','%13.9f','delimiter',' ','-append') 
end