作者vincent59 (愛世代)
看板MATLAB
標題[其他] regexp and split
時間Sat Oct 29 19:10:11 2011
我最近在寫一份電腦圖學作業。
題目是要讀取一個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
1F:推 ht15trep:\s+ :比如條件是tele,找到telephone的話會傳回telephone 10/29 20:18
2F:→ ht15trep:至於會發生什麼,要看你後面的split是做什麼用的 10/29 20:19
3F:→ ht15trep:\n+ 我猜也是差不多, 只是變成一次抓一整列 10/29 20:20
4F:→ DigiPrince:樓上是不是誤會了什麼 = =? 10/30 04:36
5F:→ ht15trep:其實我只是看help猜的... 10/30 21:29