精華區beta MATLAB 關於我們 聯絡資訊
不好意思, 又來請教各位前輩了(已事先瘋狂爬文過了) 想請問的第一個問題是當我讀取一個檔案中的字串時 例如檔案內容為: A B C 已使用以下程式碼去讀取每行字串 fid = fopen('doc.txt'); while 1 tline = fgetl(fid); if ~ischar(tline), break, end disp(tline); end 但不曉得該如何將它存成一個一維陣列呢?也就是變成: | A | | B | | C | 而第二個問題是如果上頭所述的一維字串陣列,該如何與數字陣列合併呢? 也就是變成| A 1 2 3 | | B 4 5 6 | | C 7 8 9 | 麻煩各位了, 謝謝 ^^ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.130.189.32 > -------------------------------------------------------------------------- < 作者: Gwaewluin (神無月 孝臣) 看板: MATLAB 標題: Re: [問題] 讀取檔案每行字串到陣列中 時間: Mon Mar 10 09:02:33 2008 ※ 引述《glorin (隨風出發.找到新的方向)》之銘言: : 不好意思, 又來請教各位前輩了(已事先瘋狂爬文過了) : 想請問的第一個問題是當我讀取一個檔案中的字串時 : 例如檔案內容為: : A : B : C : 已使用以下程式碼去讀取每行字串 : fid = fopen('doc.txt'); : while 1 : tline = fgetl(fid); : if ~ischar(tline), break, end : disp(tline); : end : 但不曉得該如何將它存成一個一維陣列呢?也就是變成: : | A | : | B | : | C | str = [] ; fid = fopen('doc.txt'); while 1 tline = fgetl(fid); str = [ str ; tline ] ; if ~ischar(tline), break, end disp(tline); end 這樣做有個限定就是你的哪堆字串必須長度都完全一樣 : 而第二個問題是如果上頭所述的一維字串陣列,該如何與數字陣列合併呢? : 也就是變成| A 1 2 3 | : | B 4 5 6 | : | C 7 8 9 | : 麻煩各位了, 謝謝 ^^ 假設數字矩陣叫A [ str num2str( A , '%d' ) ] 這是沒空白的 有空白會比較麻煩一點,不過你也沒有把你需要的格式與input格式說清楚 -- Deserves death! I daresay he does. Many that live deserve death. And some die that deserve life. Can you give that to them? Then be not too eager to deal out death in the name of justice, fearing for your own safty. Even the wise cannot see all ends. Gandalf to Frodo -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.120.25.235
arthurs21:那就存入cell吧!! 03/10 11:17
glorin:感謝前輩的回答...但是如果字串長度不固定該怎麼做呢 03/10 12:33
arthurs21:1.補滿空格 2.用cell 3.還沒想到 03/10 12:56
glorin:回完文才看到前輩的回答...已再將問題詳細說明囉!!Thanks. 03/10 13:05
> -------------------------------------------------------------------------- < 作者: glorin (隨風出發.找到新的方向) 看板: MATLAB 標題: Re: [問題] 讀取檔案每行字串到陣列中 時間: Mon Mar 10 13:03:26 2008 ※ 引述《Gwaewluin (神無月 孝臣)》之銘言: : ※ 引述《glorin (隨風出發.找到新的方向)》之銘言: : : 不好意思, 又來請教各位前輩了(已事先瘋狂爬文過了) : : 想請問的第一個問題是當我讀取一個檔案中的字串時 : : 例如檔案內容為: : : A : : B : : C : : 已使用以下程式碼去讀取每行字串 : : fid = fopen('doc.txt'); : : while 1 : : tline = fgetl(fid); : : if ~ischar(tline), break, end : : disp(tline); : : end : : 但不曉得該如何將它存成一個一維陣列呢?也就是變成: : : | A | : : | B | : : | C | : str = [] ; : fid = fopen('doc.txt'); : while 1 : tline = fgetl(fid); : str = [ str ; tline ] ; : if ~ischar(tline), break, end : disp(tline); : end : 這樣做有個限定就是你的哪堆字串必須長度都完全一樣 先感謝Gwaewluin與authurs21前輩的回答 關於此問題如果字串長度沒有完全一樣的話,該怎麼做呢?? : : 而第二個問題是如果上頭所述的一維字串陣列,該如何與數字陣列合併呢? : : 也就是變成| A 1 2 3 | : : | B 4 5 6 | : : | C 7 8 9 | : : 麻煩各位了, 謝謝 ^^ : 假設數字矩陣叫A : [ str num2str( A , '%d' ) ] : 這是沒空白的 : 有空白會比較麻煩一點,不過你也沒有把你需要的格式與input格式說清楚 不好意思,沒將問題說的很明白 | A | 此問題是當我們從檔案中讀取一行行的字串將其變成陣列| B | | C | 而程式中則還有一個數字矩陣A為| 1 2 3 | | 4 5 6 | | 7 8 9 | 希望寫入到檔案的格式可以變成: A 1 2 3 B 4 5 6 C 7 8 9 希望有空白或使用\t將其隔開 不知道是否有將格式說明清楚,請各位前輩多多包涵 謝謝 ^^ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.130.189.32
glorin:第一個問題已解決,但第二個問題使用G大的方法,數據會連在 03/10 21:20
glorin:一起,使用cell的話不知道怎麼使用才能印出我所想要的結果?? 03/10 21:21
glorin:全都解決囉...結果自己在耍笨... 03/10 21:29
glorin:只要使用G大的方法改成[str num2str(A, '%d\t')]就ok了 03/10 21:33
glorin:感謝前輩的指導 ^^ 03/10 21:38