Re: [問題] 讀檔的問題

看板MATLAB作者 (貓柳田博士)時間12年前 (2013/08/06 22:03), 編輯推噓0(001)
留言1則, 1人參與, 最新討論串3/3 (看更多)
※ 引述《starmoon0918 (T毛很強滴)》之銘言: : 問題是這樣的 : 以下是我的txt檔的table : ---------------> x : | ---------------- 這是一個二維陣列,我想要寫一個從第一行 : | | 00111010101000 | : | | 11001000101110 | ========> 讀取到最後一行的所有字串。在每一行讀取 : | | 00011010111010 | : | | 10101100011111 | 時,碰到1的時候做一個fprintf。 : v ---------------- : y : 因為自己沒學過 Matlab 看了一些教學還是不太會,希望有人可以指點教導 : 假如我的 txt 檔名是 load_test.txt 既然你的架構是迴圈的話 那就用你迴圈的架構來試著幫你改改看 : Array = fopen('load_test.txt','r'); 有沒有錯? 基本上沒錯,就不能寫入而已 既然是純數字的話可以試試看這個 table = load('load_test.txt'); 記住你的txt的位置要跟你的m檔一樣喔 S = size(table); 就是檢查看看你的矩陣的大小,通常會給你兩個數字 第一個是列數(row)、第二個是行數(column) 通常列數對應到的是y座標、行數則是x座標 : --------------------------- : (以下這邊不會寫Orz) : --------------------------- for y = 1:s(2); 因為原文是行數,所以照定義寫 for x = 1:s(1); 理由同上,這個是列數 : if( x == 1) : w = 0 + 164*(x-1); : t = -330 + 374*(y-1); : fprintf(Array,'C6 T%d,474;\n',w); : fprintf(Array,''); : x = x + 1; : else : x = x + 1; : end : y = y + 1; : end : end : 以上code很不完整,問題比較大是在讀檔的部分,怎麼知道這個table的行和列是多少 : 因為卡在這邊就不知道怎麼寫下去 接著如果要找每個1在哪個位置就很簡單了 把這個塞到x迴圈中 if table(y,x) == 1 pos = [pos ; y,x] end 當然pos這個參數要在迴圈外就先設定好 以上的作法算是非常直觀,但是會很操matlab與電腦 其實這個有幾乎不用迴圈的作法 (例如說:用find可以一次就把矩陣中某個值的位置分布給找出來) 但這個初學者是幾乎沒辦法想像的(在下也是初學者XD) 所以可以先試試把Matlab的環境摸熟後,再學更核心的部份 共勉之 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.24.53.100

08/06 22:51, , 1F
感謝幫忙,我還有問題直接用信件問您
08/06 22:51, 1F
文章代碼(AID): #1I0G8Ycw (MATLAB)
文章代碼(AID): #1I0G8Ycw (MATLAB)