作者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