如何修改以下代码以在Matlab r2018a上运行?

时间:2018-06-22 06:10:35

标签: c matlab mex

Matlab文件交换具有一个非常有用的混合C函数:sharedmatrix.m:

https://www.mathworks.com/matlabcentral/fileexchange/28572-sharedmatrix

但是不幸的是,它在R2014之后的版本中崩溃。

此代码对于我的项目至关重要,该项目需要R2018a中的某些功能。如何修改此代码以使其与R2018a一起运行?

1 个答案:

答案 0 :(得分:3)

该文件依赖未记录的功能。由于R2018a中MATLAB的内部发生了显着变化,因此人们在编写此类函数时所使用的大多数未记录的知识不再正确。这就是该函数崩溃的原因。

社区尚未赶上这些最近的变化,因此可能永远也不会这样做。因此,我怀疑此功能在R2018a或更高版本上将永远无法使用。

另一方面,不再需要这种类型的未记录功能,因为新的记录功能提供了大多数以前仅使用未记录功能才可能实现的功能。

有问题的文件交换提交中的一条评论建议您改为使用memmapfile

  

首先将大量数据保存到文件中,然后通过内存将其映射:

m = memmapfile(data_file_name,'Format','single','Writable',true);
     

然后您可以从parfor内部调用此内存映射文件,如下所示:

parfor i = 1:N 
   mm{i} = memmapfile(tl_data_name,'Format','single','Writable',true); 
   result(i) = someFunction(mm{i}) 
end
     

-JohnDapper,2017年6月14日

(我自己还没有测试过。)