代码之家  ›  专栏  ›  技术社区  ›  avgn

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

  •  0
  • avgn  · 技术社区  · 6 年前

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

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

    但不幸的是,它的版本比R2014晚。

    这段代码对我的项目很重要,它需要r2018a中的一些特性。如何修改这段代码以与r2018a一起运行?

    1 回复  |  直到 6 年前
        1
  •  3
  •   Cris Luengo    6 年前

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

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

    另一方面,这种类型的无文件功能不再需要,因为新的文档化功能提供了大多数早期使用无文档功能的可能的东西。

    有问题的文件交换提交中的一个注释建议您使用 memmapfile 而是:

    首先将大块数据保存到文件中,然后进行内存映射:

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

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

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

    -约翰达普,2017年6月14日

    (我没有亲自测试过。)