2011-06-01 54 views
2

Possible Duplicates:
Save mat file from MATLAB
How to tell MATLAB to open and save specific files in the same directory保存在MATLAB具有可變文件名的文件在一個循環

我有一套CSV文件和需要提取數據以獲得地塊。我使用下面的代碼在循環中生成一個變量文件名,並相應地獲取所需的數據。

P = dir('*.csv'); 

for m = 1:length(P) 
    P(m).data = csvread(P(m).name); 
end 

我現在要修改這些CSV文件獲取所需的數據之前(更改CSV文件中的數據值),然後在循環中這些文件保存爲Excel格式(.xls)。

喜歡的東西

for i = 1:length(P(m).data) 
    if P(m).data(i,1)< value1 
     P(m).data(i,2) = 0; 
    end 
    save P(m).xls P(m).data -ascii; % Gives error "save 'P(m).data' is not a valid variable name." 
end 

如何保存在Excel(.xls)格式文件與文件名可變在一個循環中獲得的陣列數據?

+0

還要檢查http://stackoverflow.com/questions/3048453/how-to-tell-matlab-to-open-and-save-specific-files-in-the-same-directory – Jonas 2011-06-01 13:01:02

回答

2

檢查出MATLAB文檔中的save() function

您需要使用函數調用語法使用變量文件名:

save(P(m).xls, P(m).data, '-ascii'); 

編輯:你似乎有新的錯誤。我可以看到兩件事情:

  1. P變量是一個結構陣列,所以它擁有超過1元 - save()可以一次只保存一個文件; 不是您的結構文件,其中有name字段。

要保存的數據,它可能會像這樣的:如果你想更換擴展,以避免覆蓋文件(我假設xls是你想要的東西)

for m = 1 : length(P), 
    save(P(m).name, P(m).data, '-ascii'); 
end 

,這應該做的絕招:

for m = 1 : length(P), 
    name = P(m).name; 
    name = name(1:find(name,'.')); 
    name = [name '.xls']; 
    save(name, P(m).data, '-ascii'); 
end 
+0

我嘗試了上面的語法,但它顯示了一個錯誤:引用不存在的字段'xls'。 – Parijat 2011-06-01 11:27:14

+0

嘗試使用[P(m)'.xls'] – 2011-06-01 12:46:36

+0

@Pijijat:更新我的帖子,試圖解決其他錯誤。 – 2011-06-01 17:18:30

相關問題