Java 在matlab中读取错误的.txt二进制数据

Java 在matlab中读取错误的.txt二进制数据,java,matlab,binaryfiles,datainputstream,dataoutputstream,Java,Matlab,Binaryfiles,Datainputstream,Dataoutputstream,我编写了一个Java程序,将数字数据输出到binary.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

我编写了一个Java程序,将数字数据输出到binary.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;
}
我得到的回报是:
资料=

   1.0e-40 *

   0.4601
   0.0009
   0.2305
   0.4601
   0.5749
   0.6897
所以,我怀疑这可能是我在Matlab中从二进制转换为浮点的问题。如有任何建议,我们将不胜感激

或者有没有其他方法从Java编写原始数据并在Matlab中处理?
谢谢

您可以将数据写入CSV格式的文件,然后将其导入Matlab

如果您的输出文件是CSV文件

1.1, 1.2, 1.3                                                                                                      
3.2, 3.3, 4.5
然后,您可以使用importdatacsvread命令将数据导入matlab

your_data = importdata('test.txt', ',')
your_data = csvread('test.txt')
如果您有更复杂的数据格式,请使用textscan。例如,您可以解析以下数据格式

"1.1", "1.2", "1.3", "3.2", "3.3", "4.5"
使用以下命令将其放入单元格数组中

buffer = fileread('/tmp/list.txt')
values = textscan(buffer, '"%f"', 'Delimiter', ',')

您可以将数据写入CSV格式的文件,然后将其导入Matlab

如果您的输出文件是CSV文件

1.1, 1.2, 1.3                                                                                                      
3.2, 3.3, 4.5
然后,您可以使用importdatacsvread命令将数据导入matlab

your_data = importdata('test.txt', ',')
your_data = csvread('test.txt')
如果您有更复杂的数据格式,请使用textscan。例如,您可以解析以下数据格式

"1.1", "1.2", "1.3", "3.2", "3.3", "4.5"
使用以下命令将其放入单元格数组中

buffer = fileread('/tmp/list.txt')
values = textscan(buffer, '"%f"', 'Delimiter', ',')

谢谢你的建议。实际上,我尝试了CSVWriter在Java中使用csv格式。但文件中的数据是字符串,如“1.1”、“1.2”,。。。而且很难处理。你能告诉我更多关于csv格式输出的细节吗?我对Java知之甚少,所以我不能给你一个详细的说明。不过,您可以使用MatlabTextScan函数从csv文件中读取数据。谢谢您的建议。实际上,我尝试了CSVWriter在Java中使用csv格式。但文件中的数据是字符串,如“1.1”、“1.2”,。。。而且很难处理。你能告诉我更多关于csv格式输出的细节吗?我对Java知之甚少,所以我不能给你一个详细的说明。但是,您可以使用MatlabTextScan函数从csv文件中读取数据。