Matlab fwrite in C#

本文关键字:in fwrite Matlab | 更新日期: 2023-09-27 17:51:21

我有一段代码,我试图在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()的输出:

       160
       134
         1
         0
         0
         0
       160
        64
         0
         0
        32
        65
         0
         0
       112
        65
         0
         0
       160
        65
         0
         0
       200
        65

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

                using (BinaryWriter writer = new BinaryWriter(file))
                {
                    writer.Write(100000);
                    writer.Write(5);
                    writer.Write(10);
                    writer.Write(15);
                    writer.Write(20);
                }

在Matlab中使用fread()输出:

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

如果有人可以帮助我在c#中映射fwrite功能

Matlab fwrite in C#

如果希望第1位之后的所有数字都写成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字节的整数表示。