2016-11-17 11 views
0

.sampのファイルのデータをのtextreadの関数でMatlabに読み込もうとしています。私はそれぞれのファイルのを配列に入れたいと思います。この.sampファイルです:それが動作し、エラーを与えていないMatlabのファイルのデータを読み込みできません

[id, type, x, y, width, height, angle] = textread('data', '%d%d%d%d%d%d%f', 'headerlines', 3); 

@CATEGORY:GENERAL 
@IMAGE:2012-04-26-Muenchen-Tunnel_4K0G0010.JPG 
# format: id type center.x center.y size.width size.height angle 
0 30 1319 2338 35 11 56.451578 
1 30 1337 2350 42 14 57.817368 
2 30 224 3556 61 20 136.967797 

私は、このコマンドを実行しようと

方法

Error using dataread

Trouble reading integer from file (row 1, field > 1) ==> % CB = DATA(OBJ, 'get_callbacks') returns a

Error in textread (line 174)

[varargout{1:nlhs}]=dataread('file',varargin{:}); %#ok

は私が入力する必要があります正しく実行するコマンドは?後で各行(行)を別々の配列に入れるにはどうすればよいですか?

+0

を使用することができ、まず 'textread'が古くなっているので' textscan'を使うべきです。次に、スペースである区切り文字を指定していないことに気づいたので、それを行うことをお勧めします。問題を解決するはずです。 – GameOfThrows

答えて

0

最初の引数として完全なファイルパスを指定してください。私にとって、C:\Users\MyUsername\dataを入れた後、

[id, type, x, y, width, height, angle] = textread('C:\Users\MyUsername\data',... 
                '%d%d%d%d%d%d%f',... 
                'headerlines', 3); 

を呼び出すと、それを動作させるのに十分なほとんどでした。しかし、Matlab documentationは、textreadからtextscanへの切り替えを提案しているので、おそらくそれを考慮する必要があります。

質問の2番目の部分については、実際にファイルが3行しかないと予想していますか?そうでない場合、あなたは行列に、すべての列ベクトルを入れることができますし、スライスして水平方向のベクトルにアクセス:あなただけの3行を持つことを期待しなければ

M = [id type x y width height angle]; 
M(1,:) % first line of your file 

は、しかし、あなたがよく

vec1 = [id(1) type(1) x(1) y(1) width(1) height(1) angle(1)]; 
vec2 = [id(2) type(2) x(2) y(2) width(2) height(2) angle(2)]; 
vec3 = [id(3) type(3) x(3) y(3) width(3) height(3) angle(3)]; 
+0

headlinesオプションは、ファイルの最初の3行(ヘッダーと呼ばれる)を無視するために使用されます。ヘッダーは通常、特殊な形式(つまり、すべての文字列)を持つため、パーサーは残りのファイルのみを解析します。 – GameOfThrows

+0

@GameOfT確かに、質問者はすべての行を別々の配列に入れたいと思っています。予想できる行数がわからないときは、それが可能かどうかわかりません。サンプルファイルには3行のデータがあり、画像に関連しているように見えるので、3つの行が異なるRGBチャンネルまたはその他のものであると仮定しました。その場合、データは毎回3行しかありません。 – Nikita

+0

答えていただきありがとうございます。私はあなたが示唆したように完全な道をつけました。このファイルはイメージ用であり、3行しかありません。しかし、これらのファイルにはもっと多くの行があります。だから私はそれぞれのファイルをインポートし、行ごとに区切りを行う必要があると言う?または、より速い方法がありますか? –

関連する問題