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