2013-07-24 48 views
0

我有以下代碼:Matlab fopen,有可能有一個數字文件名嗎?

ptol = [2, 4, 8, ...]; 

a = ptol(1) 

fid = fopen(a,'r'); 

我需要打開確定的文件,通過該號碼從ptol調用,也就是說,如果ptol(1) = 2,則fopen應該打開文件2.

目前我得到的錯誤「無效的文件名」。我該如何解決?

以下代碼是我需要用來「加載」我努力打開的矩陣文件中的數據。

fileName = strcat(num2str(a),'.ext'); 
file = fopen(fileName,'r'); 

count = 1; 

lines2skip = 4; 

mat = zeros(29,872); 

while ~feof(file) 
    if count <= lines2skip 
     count = count+1; 
     [~] = fgets(file); % throw away unwanted line 
     continue; 
    else 
     line = strtrim(fgets(file)); 
     mat = [mat ;cell2mat(textscan(line, '%f')).']; 
     count = count +1; 
    end 
end 
+1

你是什麼意思的文件2?什麼是實際的文件名?它只是'2.txt'? – am304

+0

是的,實際名稱是2.txt – user2587726

+0

然後,正如Eleanore所建議的那樣,您需要從double tp字符串轉換'a'並添加正確的文件擴展名。埃萊諾的答案是正確的。你的其他錯誤是因爲你沒有將正確的文件ID傳遞給'feof'。它應該是'while〜feof(fid)'。 'file'在代碼中沒有定義。 – am304

回答

4

a是一個數字,我猜。

因此,您需要指定一個對應於文件名的字符串。 該文件是否有擴展名? num2strstrcat應該做到這一點。

代碼:

fileName = strcat(num2str(a),'.ext'); 
fid = fopen(fileName,'r'); 

注意.ext必須與實際擴展來代替。如果您使用的是.txt文件,則用.txt替換。

此外,檢查文件的位置(您需要指定確切的路徑)。

+0

混合結果。我得到的錯誤:「錯誤使用FEOF 無效文件標識符使用的fopen生成有效的文件標識符 錯誤Untitled4(20行) 而FEOF〜(文件)。」 我將修改上面有我的文章我所有的代碼。 – user2587726

+0

根據你的代碼,你需要打開文件'2.ext',而你在評論中說你的文件名是'2.txt'。顯然,'.ext'需要替換爲您的實際擴展名。 – Eleanore

+0

很容易看出你是否在使用'fopen'命令做錯了事:如果你得到'fid = -1',那麼你沒有正確讀取文件。 – Eleanore

相關問題