textから小数点を含む数値を取り出すにはどうすればよいでしょうか
Show older comments
SVGのファイルをfilereadを用いてtextに変換し、そこから座標情報を取り出したいのですが、上手くいきません。
extract(Text, digitsPattern) を用いると、小数点は数値として認識されないようで、38.24が38と24として取り出されてしまいます。
とりあえず整数部分と小数部分に分けて取り出し、行列をreshapeを用いて上手く並べた後、num2doubleで数値にし、足し合わせることも検討しましたが、
小数点以下が.00の数値ですと、text上、小数点以下は表示されない、つまり、17.00は17と表示されるため、これもまたうまくreshapeできず解決しません。
以下に、
A=fileread(filename.svg)
extractbetween(A,'文字列','文字列')を使用して抽出したテキストをTextの中に入れた後からのコードを示しますのでよろしくお願いいたします。
Text内には
<rect x="1628.79" y="2086.67" class="st4" width="39.69" height="39.69"/>
<rect x="1631.63" y="2121.57" class="st4" width="39.69" height="39.69"/>
<rect x="1646.75" y="2193.81" class="st4" width="39.69" height="39.69"/>
<rect x="1729" y="2333.73" class="st4" width="39.69" height="39.69"/>
<rect x="1551.15" y="1804.36" class="st4" width="39.69" height="39.69"/>
<rect x="1384.64" y="1235.46" class="st4" width="39.69" height="39.69"/>
<rect x="1720.75" y="772.62" class="st4" width="39.69" height="39.69"/>
が入っています
Text
NumC = extract(Text,digitsPattern);
NumV = str2double(NumC);
これだと、
NumC =
[1628 79 2086 67...
と返ってきてしまい、また、4行目の最も左の値が整数であるために、NumVをreshapeすることも困難です
何か解決策はありますか
1 Comment
Atsushi Ueno
on 31 Jul 2022
下記に質問に対する回答をさせて頂きましたが、SVGファイルのフォーマットはXMLなので、XMLパーサで抽出すればもっと楽に、かつパラメータ名を含めて識別し構造体に読み込む事が出来るので良いと思います。
Accepted Answer
More Answers (0)
Categories
Find more on 文字と文字列 in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!