数値データをバイナリ.txtファイルに出力するJavaプログラムを作成し、そのデータファイルを処理するためにMatlabを使用する予定です。matlabで間違った.txtバイナリデータを読む
Javaプログラムでは、DataOutputStreamを使用してfloat数値をdata.txtファイルに書き込み、DataInputStreamを使用してdata.txtを読み取ってテストしました。そして私は正しい結果を得ました。
// write {1.0, 2.0, 3.0, 4.0, 5.0, 6.0}
private void writeFile(Float [] data) throws IOException {
FileOutputStream fos = new FileOutputStream(fileName);
DataOutputStream dos = new DataOutputStream(fis);
for (int i = 0; i < data.length; ++i) {
dos.writeFloat(data[i]);
}
dos.close();
}
//output is {1.0, 2.0, 3.0, 4.0, 5.0, 6.0}
private float[] readFile(String fileName, int size) throws IOException {
FileInputStream fis = new FileInputStream(fileName);
DataInputStream dis = new DataInputStream(fis);
float [] dataArray = new int[size];
for (int i = 0; i < dataArray.length; ++i) {
dataArray[i] = dis.reaFloat();
}
dis.close();
return dataArray;
}
しかし、matlabでdata.txtファイルを使用すると、番号が間違っています。私が戻った何
fid = fopen('data.txt');
data = fread(fid, 'float');
fclose all;
:
データ=
1.0e-40 *
0.4601
0.0009
0.2305
0.4601
0.5749
0.6897
だから、私はMatlabの中で浮くために、バイナリからの私の変換に問題があるかもしれないことを疑います。どんな勧告も感謝しています。
Javaのプリミティブデータを書き込んでMatlabで処理する方法はありますか?おかげさまで
ありがとうございます。私は実際にJavaのCSVWriterによるCSV形式で試してみます。しかし、ファイル内のデータは "1.1"、 "1.2"のように文字列です...そして処理が難しいです。 csv形式の出力の詳細を教えてください。 – nghiduong90
私はJavaについてよく知らないので、詳細な説明はできません。ただし、MATLAB textscan関数を使用して、csvファイルからデータを読み取ることができます。 – hungptit