[其他] regexp and split

看板MATLAB作者 (愛世代)時間12年前 (2011/10/29 19:10), 編輯推噓1(104)
留言5則, 2人參與, 最新討論串1/1
我最近在寫一份電腦圖學作業。 題目是要讀取一個3d物件,副檔名:.obj。 http://ppt.cc/5Twq 做完所指定的運算,再另存一個xx.xyz。 作業是寫完了,也驗證過了。只是有滿多東西尚不明瞭,想跟大家請教。 因為我還不太會簡潔敘述我的問題,所以文章很長。請多包涵。 我本來呢用fopen+fread單純去讀 fid=fopen('home1.obj','r'); A=fread(fid, inf, 'double')' 或者 A =fread(fid, inf, 'char') 得到都是一堆數值。 剛剛再查一下 help,也許跟fopen+encoding有關。 可是如果沒指定編碼方式,matlab是如何決定的?? 我在網路上有找到一個可使用的toolbox,本來想直接用。 但我決定從這個已寫好的函數去找尋可用的資訊。 幸運的是我耐心的去找,的確有可用的部分。 *************************************** home1.obj的部份內容 第一行為 # 3ds Max Wavefront OBJ Exporter ............ 接者空2行 v 139.9355 50.1993 24.0000 ************************************** fid=fopen('home1.obj','r'); file_text=fread(fid, inf, 'uint8=>char')';%讀取整數(無號數),以字元陣列存入。 fclose(fid); file_lines = regexp(file_text, '\n+', 'split'); file_words = regexp(file_lines, '\s+', 'split'); ***************************************************** regexp +split 是將要比對的部分作為分隔字元(從help得到的資訊) 如果 \n代表下一行,\s代表空白字元 那' +'代表什麼?????? ******************************* 以下為從workspace 觀察到的資訊 file_text 1*319204 char file_lines 1*14620 cell ,每個subcell(data type 為char)大小不一 file_words 1*14620 cell 每個subcell(data type 為cell),除了純文字和空白的部分 我所需的頂點資訊皆為1*5cell 我本來想從workspace 觀察到的資訊去了解最後二行是如何動作,但我還是不太懂。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.118.21.111

10/29 20:18, , 1F
\s+ :比如條件是tele,找到telephone的話會傳回telephone
10/29 20:18, 1F

10/29 20:19, , 2F
至於會發生什麼,要看你後面的split是做什麼用的
10/29 20:19, 2F

10/29 20:20, , 3F
\n+ 我猜也是差不多, 只是變成一次抓一整列
10/29 20:20, 3F

10/30 04:36, , 4F
樓上是不是誤會了什麼 = =?
10/30 04:36, 4F

10/30 21:29, , 5F
其實我只是看help猜的...
10/30 21:29, 5F
文章代碼(AID): #1EgzyQNJ (MATLAB)