看板 MATLAB 關於我們 聯絡資訊
板上各位好,我的問題在於能否有辦法將讀入的字串拿來命名變數? 我的目的在於將說明檔內的項目及內容對應讀出至同個cell中後, 將該項目字串作為其內容字串的變數名稱。 說明檔內容概略如下: . . . FILE_DATE = 2015-07-25T14:36:47Z STATION_ID = "LGN" PROCESSING_SOFTWARE_VERSION = "LPGS_2.5.1" . . . 我以for迴圈及fgetl逐條讀取後以strtok取出等號前後的文字分別為項目及內容, 並存至cell內table{line,1}及table{line,2}中。 目前卡住的地方在於我想用table{line,1}的字串逐項為table{line,2}內的字串命名, 即鍵入FILE_DATE會直接跳出2015-07-25T14:36:47Z。 請板上先進不吝提點,謝謝! -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 49.218.39.53 ※ 文章網址: https://www.ptt.cc/bbs/MATLAB/M.1471834535.A.C93.html
sunev: eval萬能,不過為什麼要這麼做? 08/22 11:16
感謝sun大提示,之前就有用eval但一直失敗,剛終於試成功, 對於引號放置的位置感覺仍是嘗試錯誤... eval([table{str_lines,1} '= table{str_lines,2}']) 主要是因為這個說明檔未來仍有可能增減內容,而用這種方式就能將所有資訊讀入。 而對於特定用途的應用,我只需知道哪些項目是我需要的就可以把內容抓出來使用。 ※ 編輯: fxxkjoe1231 (49.218.39.53), 08/22/2016 15:04:35
sunev: 先看看這是是不你要的字串 08/22 15:42
sunev: [table{str_lines,1} '= table{str_lines,2}'] 08/22 15:42
sunev: 應該是弄反了 08/22 15:42
sunev: [table{str_lines,1} = ''table{str_lines,2}''] 08/22 15:43
sunev: 不過你這裡要用eval,之後你所謂的「將所有資訊讀入」 08/22 15:44
sunev: 打算怎麼做?一樣用eval?資訊一直都在那個table函數啊? 08/22 15:44
我用回文內的部分沒問題,內容都以項目名重新命名。 我的意思為,假設我的說明檔內有一百條,則跑了我詢問部分前的程序後, 可得到一個table,內部有該說明檔內的項目及內容(值)各一百項。 而我的問題部分則可以將該table內的內容以項目命名,且該項目名稱不變。 若未來的說明檔增加了其他項目(>一百條),則我一樣可以讀檔, 並將我要的項目及其值抓出來使用。 即使說明檔內的項目增加而改變各項目的排序,而我事先已經確定我需要的項目為何, 我都可以快速讀檔並用該項目名稱找到對應的值。 早期我是先記好各項目位置後,只抓特定值,但自從說明檔改版後新增資訊, 就得親自打開說明檔去找被更改後各項目的位置。 前文我提到的方法是我想到目前較自動化且好維護的方法 ※ 編輯: fxxkjoe1231 (49.218.39.53), 08/22/2016 16:36:13
sunev: 得到table的程序已經自動化了,既使說明檔做了變動,也可以 08/22 16:44
sunev: 自動產生新的table? 08/22 16:44
sunev: 所以你需要的只是「用該項目名稱找到對應的值」,那用那個 08/22 16:45
sunev: table變數就可以辦到了啊? 08/22 16:45
我大概懂意思了,是指透過字串判斷直接去找table內對應的值? ※ 編輯: fxxkjoe1231 (49.218.39.53), 08/22/2016 22:14:11
sunev: 差不多是這個意思,可能要用for,不過才幾百個也不會太慢 08/22 22:23