Re: [問題]如何用MATLAB輸出txt檔資料 已回收
※ 引述《holamike (mike)》之銘言:
: ←如果我資料不只一個呢
程式碼用亮黃色表示
舊程式碼用淺水藍色表示
解說用白色表示
file = dir('檔案路徑')
假設檔案是放在c:\abc\cde\efg中,那個檔案路徑就是c:\abc\cde\efg
如果是指定要讀txt檔,就是c:\abc\cde\efg\*.txt
假設執行的m檔案放在cde的時候,寫efg\*.txt就好
對matlab來說,檔案路徑是一個字串,所以記得加引號喔
filesize = size(file)
用這個來判斷說你找到了多少檔案
通常file這個矩陣只有一行,所以請安心使用XD
這個程式碼算是對作for迴圈的一個前置作業
for i = 1 : filesize(1)
作迴圈
正如前面所說,因為行數只有一個,所以要用列數來做。filesize(1)表示讀file的列數
cd efg
移動到efg的資料夾(若m檔案放在cde資料夾的時候,可直接這樣打,不然最好用絕對路徑)
若不這樣做,matlab是讀不到檔案的
若把m檔案放到efg資料夾時,則這個程式碼就可以省略了
fid = fopen(char(file(i).name));
對matlab來說
file(i).name還是一個程式碼(雖然結果是字串)而fopen只能吃字串
所以中間要用char來把程式碼的東西轉換成字串
: a = fgetl(fid); % a : 第一列
: fgetl(fid); % 捨去第二列
: fgetl(fid); % 捨去第三列
: fgetl(fid); % 捨去第四列
: fgetl(fid); % 捨去第五列
: fgetl(fid); % 捨去第六列
: b = fgetl(fid); % b : 第七列
: data = [a; b];
cd ..
如果要把檔案存在資料夾外面的話
最好要這樣寫
若不在意檔案存在資料夾內的話,這條程式碼還是要寫,只是要寫在end的前面
: xlswrite('name.xls',data)
end
迴圈結束
: 我想要抓第一列跟第七列可是程式好像錯誤
: 幫幫我 謝謝
以上主要是在表示如果檔案很多的時候,怎麼用迴圈
另外我猜大概是因為m檔案的位置跟欲讀的檔案的位置不同,所以才會出現error
先這樣試試看吧
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.166.130.158
推
08/29 22:19, , 1F
08/29 22:19, 1F
更新
fopen('檔名')的部份最好寫成fopen('檔名','r')
後面那個r是指read,也就是matlab只會讀取該檔案的文字部分(應該是這樣說沒有錯吧)
雖然這可能不是error的主因,但還是試一下看看
※ 編輯: shuntau 來自: 118.166.130.158 (08/29 23:16)
討論串 (同標題文章)
完整討論串 (本文為第 5 之 8 篇):