【发布时间】:2017-09-22 11:06:01
【问题描述】:
我有两个问题:
例如,my_vector = zeros(1, N) 不能用于对象/结构,对吧?
【问题讨论】:
标签: matlab vector dynamic-memory-allocation
我有两个问题:
例如,my_vector = zeros(1, N) 不能用于对象/结构,对吧?
【问题讨论】:
标签: matlab vector dynamic-memory-allocation
在 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
【讨论】: