【问题标题】:Dynamic memory allocation in MATLABMATLAB 中的动态内存分配
【发布时间】:2017-09-22 11:06:01
【问题描述】:

我有两个问题:

  1. Crealloc()MATLAB 等价物是什么? 是reshape()吗?
  2. 如何初始化一个 MALTAB 向量,该向量可用于增量添加对象/结构类型的新元素?

例如,my_vector = zeros(1, N) 不能用于对象/结构,对吧?

【问题讨论】:

    标签: matlab vector dynamic-memory-allocation


    【解决方案1】:

    在 MATLAB 中,内存分配是自动完成的。即,向向量添加元素会自动执行realloc

    x = [ 1 2 3 ];
    x(4) = 4;  % performs realloc
    % now x == [1 2 3 4]
    
    x(2) = []; % deletes element 2
    % now x == [1 3 4]
    

    为了创建一个对象数组,我过去使用了repmat。由于在一般情况下需要从一些数据构造对象,我发现如果对类一无所知,复制通常是最好的。要创建一个由 CLS 类的默认构造对象组成的 2x3x4 数组,请使用

    x = repmat( CLS(), [ 2 3 4] )
    

    我觉得这比写更合适

    x = CLS();
    x(2,3,4) = CLS();
    

    这可能也可以工作,但阅读起来很尴尬,如果类没有正确实现,可能会有细微的错误。

    structs 也可以使用 repmat 创建,或者,通过向struct 构造函数提供元胞数组,例如,

    x = struct( 'a', { 1 2 3}, 'b', { 5 6 7} );
    % now x is a 1x3 struct array
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-07-23
      • 2012-01-13
      • 1970-01-01
      • 1970-01-01
      • 2021-02-15
      • 2013-07-01
      相关资源
      最近更新 更多