【问题标题】:MATLAB/Embedded Coder File LoadingMATLAB/嵌入式编码器文件加载
【发布时间】:2019-07-05 11:27:06
【问题描述】:

我生成了用于加载 mat 文件的代码,如下所示

data=coder.load('data.mat');
a=data.a;
b=data.b;

因为其中一个变量,例如“a”,非常大,所以它在主函数中定义为一个大的静态 const 数组,所有值都在那里初始化。

有什么方法可以让 MATLAB Coder 从 C 代码中的文件加载数据,而不是在主函数中将其定义为变量?

【问题讨论】:

    标签: matlab load matlab-coder


    【解决方案1】:

    代码生成支持 MATLAB fread 函数。所以你可以fwrite 将数据放到 MATLAB 中的一个文件中,然后在生成的代码中 fread 它。这将执行运行时读取并避免生成代码中的巨大常量。

    【讨论】:

    • 尝试为freadfwrite 指定精度参数。假设您有 int32 值,然后使用 'int32' 写入并使用 '*int32' 将它们读取为 32 位整数。只需更改示例的类型名称即可。
    【解决方案2】:

    这是我们应该根据 Ryan 的回答使用的确切代码:

    load('Data.mat')
    fileID = fopen('Data.bin', 'w');
    fwrite(fileID, Matrix1,'uint64');
    fclose(fileID);
    
    
    fileID=fopen('Data.bin');
    Matrix2=fread(fileID,[256,256],'uint64');
    fclose(fileID);
    

    矩阵 2 现在与矩阵 1 相同。写入和读取的技巧是根据数据类型使用相同的精度。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-08-12
      • 1970-01-01
      • 2010-10-05
      • 2019-10-06
      • 1970-01-01
      • 1970-01-01
      • 2011-08-01
      • 1970-01-01
      相关资源
      最近更新 更多