主要内容

coder.write

创建生成的代码在运行时读取的数据文件

自 R2023a 起

    说明

    使用 coder.write 函数创建生成的代码可以在运行时读取的数据文件。这些文件的扩展名为 .coderdata。仅在 MATLAB® 执行中使用此函数,而不要在您打算用于 C/C++ 代码生成的 MATLAB 代码中使用。

    要从 MATLAB 执行中的 .coderdata 文件和生成的代码中读取数据,请使用 coder.read 函数。.coderdata 文件包含一个类型头,用于指定该文件中存储的数据的类型和大小。coder.read 函数在解释文件内容时使用此信息。

    coder.write(filename,data) 将变量 data 存储在当前文件夹中名为 filename.coderdata 的文件中。

    示例

    coder.write(filename,data,Name=Value) 接受附加的名称-值参量,您可以使用这些参量来执行以下操作:

    • .coderdata 文件指定与变量 data 一致的自定义类型头。

    • 省略实际数据,创建一个仅具有类型头的 .coderdata 文件。

    使用此语法创建一个类型头文件,它是 .coderdata 文件,用于为 coder.read 函数指定数据的类型和大小。

    示例

    示例

    全部折叠

    为单个变量创建一个存储文件。此存储文件可以在运行时通过使用 coder.read 函数来读取。

    在工作区中创建一个类型为 double 的 20×20 数组。

    c = rand(20);

    将此变量存储在当前文件夹中名为 storageFile.coderdata 的文件中。

    coder.write("storageFile.coderdata",c);

    为多个变量创建一个存储文件。

    在您的工作区中创建两个类型为 double 的数组。数组 var_avar_b 的大小分别为 10×10 和 20×20。

    var_a = rand(10);
    var_b = rand(20);

    创建一个结构体 s,在其字段中包含数组 var_avar_b

    s = struct('a',var_a,'b',var_b);

    将结构体 s 存储在 .coderdata 文件中。

    coder.write("storageFile.coderdata",s);

    您也可以使用元胞数组在一个 .coderdata 文件中存储多个变量。

    假设您要生成可以在运行时读取多个 .coderdata 文件的代码。这些文件包含类型相同但大小不同的数组数据。要实现此目标,您必须将与所有单个数据文件一致的类型头文件传递给入口函数中的 coder.read 函数调用。此示例说明如何创建一个这样的类型头文件。有关实际的代码生成工作流,请参阅读取在运行时大小可变的数据 (MATLAB Coder)

    在命令行中,创建变量 var_avar_b,它们的类型都为 double,但大小不同。使用 coder.write 函数将这些数组分别存储在文件 file_a.coderdatafile_b.coderdata 中。

    var_a = rand(10,20);
    var_b = rand(5,30);
    coder.write("file_a.coderdata",var_a)
    coder.write("file_b.coderdata",var_b)

    与变量 var_avar_b 都一致的 coder.Type 对象必须具有可变大小维度。这两个数组维度的上界必须分别至少为 10 和 30。创建一个 coder.Type 对象,该对象表示具有这些边界的可变大小 double 类型。

    common_type = coder.typeof(var_a,[10 30],[1 1])
    common_type = 
    
    coder.PrimitiveType
       :10×:30 double

    修改 file_a.coderdata 的头信息,使其与数组 var_avar_b 都兼容。您可以将修改后的文件用作所需的公共类型头文件。

    coder.write("file_a.coderdata",a,TypeHeader=common_type);

    您也可以通过运行以下命令,使用所需的类型头信息修改 file_b.coderdata 文件。

    coder.write("file_b.coderdata",b,TypeHeader=common_type);

    另一种方法是创建一个单独的类型头文件 myTypeHeader.coderdata,它只包含与所有现有存储文件兼容的类型头文件,不包含实际数据。

    coder.write("file_b.coderdata",var_b,TypeHeader=common_type,TypeHeaderOnly=true);

    如果您正在处理大型数据文件,并且希望将生成的文件仅用作类型头文件,则这种类型头文件非常有用。

    输入参数

    全部折叠

    新的或现有存储文件的名称或完整文件路径,指定为字符串标量或字符向量。生成的存储文件的名称为 filename.coderdata;如果您提供的值已具有扩展名,则名称仅为 filename

    要保存在存储文件中的数据源,指定为存储在结构体或元胞数组中的一个或多个数组。

    数据类型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | char | string | struct | cell | categorical | sparse
    复数支持:

    名称-值参数

    全部折叠

    将可选的参量对组指定为 Name1=Value1,...,NameN=ValueN,其中 Name 是参量名称,Value 是对应的值。名称-值参量必须出现在其他参量之后,但对各个参量对组的顺序没有要求。

    在 R2021a 之前,使用逗号分隔每个名称和值,并用引号将 Name 引起来。

    示例: coder.write('example.coderdata',rand(1000),TypeHeader=coder.typeof(1,[1000 1000],1 1]),TypeHeaderOnly=true)

    存储数据的类型信息,指定为 coder.Type 对象。此类型对象必须与输入参量 data 兼容。此对象的默认值为 coder.typeof(data)

    要创建一个类型对象,请使用 coder.typeof (MATLAB Coder)coder.newtype (MATLAB Coder) 函数。您还可以使用代码生成器生成类型编辑器以交互方式创建和编辑 coder.Type 对象。请参阅Create and Edit Input Types by Using the Coder Type Editor (MATLAB Coder)

    示例: coder.write("example.coderdata",rand(10),TypeHeader=coder.typeof(1,[10 10],1 1]))

    用于创建 .coderdata 文件的选项(该文件仅具有类型头并省略数据),指定为 truefalse。如果 data 是大型数组,并且您要将 .coderdata 文件仅用作类型头文件,请将此参量设置为 true

    示例: coder.write("example.coderdata",rand(1000),TypeHeaderOnly=true)

    写入 .coderdata 文件时在 MATLAB 命令行中显示状态消息的选项,指定为 truefalse

    版本历史记录

    在 R2023a 中推出