MATLAB/Embedded 编码器文件加载

MATLAB/Embedded Coder File Loading

我生成的加载mat文件的代码如下

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

因为其中一个变量,例如"a",非常大,所以在main函数中定义为一个大的static const数组,所有的值都在那里初始化。

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

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

根据 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 相同。写入和读取的技巧是根据数据类型使用相同的精度。