MATLAB/嵌入式编码器文件加载

MATLAB/嵌入式编码器文件加载,matlab,load,matlab-coder,Matlab,Load,Matlab Coder,我生成了加载mat文件的代码,如下所示 data=coder.load('data.mat'); a=data.a; b=data.b; 因为其中一个变量(例如“a”)非常大,所以它被定义为主函数中的一个大静态常量数组,所有值都在该数组中初始化 有没有办法让MATLAB编码器从C代码中的文件加载数据,而不是在主函数中将其定义为变量?代码生成支持MATLABfread函数。因此,您可以fwrite将数据写入MATLAB中的文件,然后fread将其写入生成的代码中。这将执行运行时读取,并避免生成代

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

data=coder.load('data.mat');
a=data.a;
b=data.b;
因为其中一个变量(例如“a”)非常大,所以它被定义为主函数中的一个大静态常量数组,所有值都在该数组中初始化


有没有办法让MATLAB编码器从C代码中的文件加载数据,而不是在主函数中将其定义为变量?

代码生成支持MATLABfread函数。因此,您可以
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相同。写入和读取的技巧是根据数据类型使用相同的精度。

尝试将精度参数指定为
fread
fwrite
。假设您有
int32
值,然后使用
'int32'
进行写入,并使用
'*int32'
将其作为32位整数读取。只需更改示例的类型名称。