【问题标题】:How do I modify the the following code to run on Matlab r2018a?如何修改以下代码以在 Matlab r2018a 上运行?
【发布时间】:2018-06-22 06:10:35
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: c matlab mex


    【解决方案1】:

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

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

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

    相关文件交换提交中的一个 cmets 建议您改用 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 日

    (我自己没有测试过。)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-01-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-20
      • 2019-06-13
      • 1970-01-01
      相关资源
      最近更新 更多