Я написал программу на Java для вывода числовых данных в двоичный файл .txt и планирую использовать Matlab для обработки этого файла данных.
В программе на Java я использовал DataOutputStream для записи чисел с плавающей запятой в файл 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;
}
Однако, когда я использую файл data.txt в Matlab, я получаю неправильный номер.
fid = fopen('data.txt');
data = fread(fid, 'float');
fclose all;
Вот что я получил:
data =
1.0e-40 *
0.4601
0.0009
0.2305
0.4601
0.5749
0.6897
Итак, я сомневаюсь, что это может быть проблемой с моим преобразованием из двоичного в число с плавающей запятой в Matlab. Любая рекомендация приветствуется.
Или есть другой способ написать примитивные данные с Java и обработать в Matlab? Спасибо.