MATLAB/嵌入式编码器文件加载
我生成了加载mat文件的代码,如下所示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将其写入生成的代码中。这将执行运行时读取,并避免生成代
data=coder.load('data.mat');
a=data.a;
b=data.b;
因为其中一个变量(例如“a”)非常大,所以它被定义为主函数中的一个大静态常量数组,所有值都在该数组中初始化
有没有办法让MATLAB编码器从C代码中的文件加载数据,而不是在主函数中将其定义为变量?代码生成支持MATLAB
fread
函数。因此,您可以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位整数读取。只需更改示例的类型名称。