2017-05-08 7 views
-2

問題は次のとおりです.3つの数値列を含む.txtファイルがあります。最初の2列は、点の座標x、yです。第3の列n(zベクトル)は、各点の光度を表す数で構成されている。 (.txtファイルは、燃焼プロセスの写真を調べるために使用されるソフトウェアによって生成されています)。各ベクトル(x、y、z)は、316920要素(すべての整数)で構成されています。さて、これらの3つのベクトルから、光度の値をポイントのコーディアンテに関連付ける画像を作成する方法はありますか? お時間をありがとう!マトリックスから画像を作成する方法(可能な場合)

+1

を使用し、画像は行列です。あなたはあなたの問題をよりよく解き放つことができますか?あなたのx、y点が注文されていないという問題はありますか?もしそうなら、あなたはすべてのポイントのメッシュを持っていますか(つまり、x-yのすべての組み合わせは存在していますか?それらは整数か浮動小数点ですか? [ask]と[mcve] –

+0

を読んで、ポイント(x、y)を注文してください。数字はすべて整数です。 (x、y、zすべての整数)。行列は長方形です – Lamberto

+0

次に重複をチェックし、そこにあなたの解決策があります。 –

答えて

0

ファイルimage.txtには、y xと輝度の値が線で区切られているとみなされます。このような。

1 1 0 
1 2 12 
1 3 10 
.... 
.... 
255 255 0 

は、関数fopenを

fid = fopen(image.txt,'r'); 
im=[]; 

を使用してテキストファイルを開いて、関数fgetl関数で文字列ラインを読み取るsscanf関数を使用してベクターに文字列の行を変換し、yとx座標に強度値を置きます画像行列の、im。

tline=fgetl(fid) ; 
rd=sscanf(tline,'%d'); 
im(rd(1),rd(2))=rd(3); 

同じプロセスがファイルの最後まで反復されます。 最後に閉じるファイルハンドルfid

+0

このメソッドは次のようになります。fid = fopen( 'image.txt'、 'r'); – Reflection

+0

yes .. fidはファイルハンドルを表し、image.txt - >読み込むファイルと 'r' - >はファイルの読み込み操作を表します。 – clcoder

+0

@ Clcoder私はimage.txtが 'image.txt'のような文字列として宣言されるべきであることを意味しました – Reflection

0

テキストファイルの3つの列がコンマで区切られていると仮定します(カンマで区切られていない場合、コードは少し異なる必要があります)。あなたはすべての数値が整数であると言いましたので、私はあなたのxとy coloumnsを使って2Dグリッドを満たすために必要なすべてのデータがあると仮定しようと思います。私はそれが順序付けられた形であると仮定していない。これらの仮定を用いてコードは、他の区切り文字の

data = csvread(filename) 
for i=1:length(data) 
matrix(data(i,2)+1,data(i,1)+1)=data(i,3) // +1 is added since there maybe a index starting from 0 and matlab needs them to start from 1 
end 
image(matrix) 

ようになりマトリクスが画像である

data = dlmread(filename,delimiter) 
関連する問題