将float数组写入二进制文件c#
Write float array into a binary file c#
我有一个浮点数组:
float[] samples32array
我需要将它转换成二进制文件,以便我可以在 matlab 中读取它。
有什么办法吗?
This SO answer shows a way to convert a float array into a byte array. Then you can use File.WriteAllBytes() method 将其写入文件。不过,MatLab 如何读取它是个问题。
我找到了 some documentation for MatLab for the fread
命令。看起来它有一些参数可以让您定义读取的精度。您可以使用 "float" 作为精度值。不过,这是一个有根据的猜测,因为我对 MatLab 不是很熟悉。
您可以使用BinaryWriter
非常容易地将数据写入文件:
foreach (var value in samples32array)
{
writer.Write(value);
}
现在 BinaryWriter
保证使用小端格式,因此在您的 Matlab 调用中,您应该指定 machinefmt
值 l
以明确地以小端格式读取它格式也一样。
很简单。首先,您应该使用 FileStream
and create a file. Then, you can use 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
,因此可以使用任何流类型。它适用于文件流以及 NetworkStream
或 MemoryStream
等。这是一个非常通用的 class.
并且请避免事先将 float[]
转换为 byte[]
,因为它会分配内存,如果您的数组很大(不知道您是否属于这种情况),这会很糟糕。
我有一个浮点数组:
float[] samples32array
我需要将它转换成二进制文件,以便我可以在 matlab 中读取它。
有什么办法吗?
This SO answer shows a way to convert a float array into a byte array. Then you can use File.WriteAllBytes() method 将其写入文件。不过,MatLab 如何读取它是个问题。
我找到了 some documentation for MatLab for the fread
命令。看起来它有一些参数可以让您定义读取的精度。您可以使用 "float" 作为精度值。不过,这是一个有根据的猜测,因为我对 MatLab 不是很熟悉。
您可以使用BinaryWriter
非常容易地将数据写入文件:
foreach (var value in samples32array)
{
writer.Write(value);
}
现在 BinaryWriter
保证使用小端格式,因此在您的 Matlab 调用中,您应该指定 machinefmt
值 l
以明确地以小端格式读取它格式也一样。
很简单。首先,您应该使用 FileStream
and create a file. Then, you can use 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
,因此可以使用任何流类型。它适用于文件流以及 NetworkStream
或 MemoryStream
等。这是一个非常通用的 class.
并且请避免事先将 float[]
转换为 byte[]
,因为它会分配内存,如果您的数组很大(不知道您是否属于这种情况),这会很糟糕。