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

How do I modify the the following code to run on Matlab r2018a?

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

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

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

此代码对我的项目至关重要,该项目需要 R2018a 中的某些功能。如何使用 R2018a 将此代码修改为 运行?

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

社区没有跟上这些最近的变化,而且可能永远不会跟上。所以我怀疑这个功能永远不会在 R2018a 或更新版本上工作。

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

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

First save the large piece of data to a file, then memory map it:

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

You can then call this memory mapped file from inside a parfor like so:

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

— JohnDapper, 14 Jun 2017

(我自己没有测试过。)