2016-07-24 9 views
1

のブロックとして、幾何学的なラインが含まれているロードデータファイルに次のように格納されたデータをロードする方法があるかどうか、私は知っているだろう:GNU-オクターブ:座標

$ cat foo 
12.108 24.21; 89.02 17.3131; 93.192368 13.10012; .... 
10.3069 41.7442; 90.1277 19.351; 93.192368 13.10012; 91.1956 15.29712; ... 
... 

ので、フォームは次のとおりです。
x y; x y; x y;等々。
x y値の組で定義される各点は、幾何学的線​​を構成する点である。

ファイルの各行には、一連の点で定義される独自の幾何学的線​​が含まれています。いくつかの行は2つの点から成り、他の行はいくつかの点から成っています。それは様々です。私は今、そのファイルを読み込むことができないので、一定の数のフィールドがないように。

理想的には、それぞれの行を変数、あるいはそれ以上に格納することをお勧めします。すべてのインデックス構造、セルまたはnD行列の一種です。行内にポイントが連続して2 で定義されています)。

ありがとうございました。配列内のデータを保存する

答えて

1

はエレガントなソリューションであるように思わ:

fid=fopen("File.csv"); 
tline=fgetl(fid); 
ix=1; 
while ischar(tline) 
    A{ix}=str2num(tline); 
    tline=fgetl(fid); 
    ix=ix+1; 
end 
fclose(fid); 
  1. ファイルを開くここでは、反復値、ixを設定し
  2. tlineを初期化するために使用fgetlfopoen
  3. を使用して、 〜1(数値の定数でもあるので、iは避けてください)
  4. tlinefgetl返される行はAアレイのA{ix}一部でstr2numを用いnum値に変換保存(-1fgetlを返し、ファイルの終わりに、覚えている)文字です。
  5. fcloseでファイルを閉じることを忘れないでください。

したがって、A{ix}(x、y)は構造サブアレイに入力ファイルのIX番目のラインを取っている:

> A{1} 
ans = 
    12.108  24.21 
    89.02  17.3131 
93.192368  13.10012 
... 


> class(A{1}) 
ans = double 

https://www.gnu.org/software/octave/doc/v4.0.0/Opening-and-Closing-Files.html
https://www.gnu.org/software/octave/doc/v4.0.0/Line_002dOriented-Input.html