C# Matlab在C中编写#

C# Matlab在C中编写#,c#,matlab,fwrite,binarywriter,C#,Matlab,Fwrite,Binarywriter,我有一段代码正试图用C#实现。该代码使用Matlab使用frwite命令编写文件。我试着阅读文档并通过一些示例来了解frwite的工作原理。 我尝试了以下方法,但没有成功 代码如下: line_vectors = [5;10;15;20;25] sampPeriod=100000; [filename,permission,machineformat] = fopen(outputfile); fwrite(outputfile,sampPeriod,'int32'); fwrite(outpu

我有一段代码正试图用C#实现。该代码使用Matlab使用
frwite
命令编写文件。我试着阅读文档并通过一些示例来了解
frwite
的工作原理。 我尝试了以下方法,但没有成功

代码如下:

line_vectors = [5;10;15;20;25]
sampPeriod=100000;
[filename,permission,machineformat] = fopen(outputfile);
fwrite(outputfile,sampPeriod,'int32');
fwrite(outputfile,line_vectors(:),'float32');
使用fread()输出:

我尝试在C#中实现类似的代码:

在Matlab中使用fread()输出:

   160
   134
     1
     0
     5
     0
     0
     0
    10
     0
     0
     0
    15
     0
     0
     0
    20
     0
     0
     0

如果有人可以帮助我映射C#中的
fwrite
功能。

如果希望将第一个之后的所有数字都写为float32,则可以指示其他值的值类型,如下所示:

using (BinaryWriter writer = new BinaryWriter(file))
{
    writer.Write(100000);
    writer.Write(5.0f);
    writer.Write(10.0f);
    writer.Write(15.0f);
    writer.Write(20.0f);
}

BinaryWriter.Write
是一个重载函数,有许多可能的输入类型。根据作为输入变量传递的类型,函数的特定版本会将表示该类型值的字节写入。由于您的初始代码没有提供其他信息,因此默认设置为假定
int
,并使用了4字节整数表示。

似乎这是唯一的区别,我得到了精确的输出匹配。这意味着fwrite相当于C中的BinaryWriter#
   160
   134
     1
     0
     5
     0
     0
     0
    10
     0
     0
     0
    15
     0
     0
     0
    20
     0
     0
     0
using (BinaryWriter writer = new BinaryWriter(file))
{
    writer.Write(100000);
    writer.Write(5.0f);
    writer.Write(10.0f);
    writer.Write(15.0f);
    writer.Write(20.0f);
}