将float数组写入二进制文件c#

时间:2015-06-03 19:22:12

标签: c# matlab file binary floating-point

我有一个浮点数组:

float[] samples32array

我需要将其转换为二进制文件,以便我可以在matlab中阅读。

有没有办法做到这一点?

3 个答案:

答案 0 :(得分:2)

您可以使用BinaryWriter将数据轻松写入文件:

foreach (var value in samples32array)
{
    writer.Write(value);
}

现在BinaryWriter保证使用小端格式,因此在您的Matlab调用中,您应指定machinefmtl以明确地以小端格式读取它

答案 1 :(得分:2)

这很简单。首先,您应该使用FileStream并创建一个文件。然后,您可以使用BinaryWriter,它可以将任何C#数据类型写入底层流,例如FileStream

using (FileStream file = File.Create(path))
{
    using (BinaryWriter writer = new BinaryWriter(file))
    {
        foreach (float value in samples32array)
        {
            writer.Write(value);
        }
    }
}

由于BinaryWriter的构造函数接受基本类型Stream,因此可以使用任何流类型。它适用于文件流以及NetworkStreamMemoryStream等。这是一个非常通用的类。

请避免事先将float[]转换为byte[],因为它会分配内存,如果您的数组很大(不知道你是否属于这种情况),那就不好了。

答案 2 :(得分:1)

This SO answer shows a way to convert a float array into a byte array。然后,您可以使用File.WriteAllBytes() method将其写入文件。但MatLab如何阅读它将成为问题。

我找到了some documentation for MatLab for the fread命令。看起来有一些参数可以让你定义读取的精度。您可以使用" float"作为精度值。虽然,这是一个有点受过教育的猜测,因为我对MatLab不是很熟悉。