Re: [問題]如何用MATLAB輸出txt檔資料 已回收

看板MATLAB作者 (貓柳田博士)時間14年前 (2011/08/29 14:18), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串5/8 (看更多)
※ 引述《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)
文章代碼(AID): #1EMoyZ5A (MATLAB)
討論串 (同標題文章)
文章代碼(AID): #1EMoyZ5A (MATLAB)