MATLAB中的动态内存分配

时间:2017-04-25 12:23:59

标签: matlab vector dynamic-memory-allocation

我有两个问题:

  1. C ' s realloc() MATLAB 等价物是什么? 那是reshape()吗?
  2. 如何初始化 MALTAB 向量,该向量可用于逐步添加对象/结构类型的新元素?
  3. 例如,my_vector = zeros(1, N)不能用于对象/结构,对吧?

1 个答案:

答案 0 :(得分: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();

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

也可以使用repmat创建

struct,或者通过向struct构造函数提供单元数组来创建 x = struct( 'a', { 1 2 3}, 'b', { 5 6 7} ); % now x is a 1x3 struct array ,例如,

dialogRef.afterClosed().subscribe(this.functionName);

functionName(result: any) {
                if (result) {
                    let fileId = this.document.fileId;
                    this.docProvider.extractPage(this.document.fileId, result.fromPage, result.toPage).subscribe(() => {
                       () => { //totest },
                       (error) => { //totest }
                    });
                } else {
                    //totest
                }
            }
}