2

Matlab中,我有一个简单的结构,我想构建一个这种结构的数组(我知道怎么做)。我的问题:有没有办法简单地将一个元素插入到该数组中,而不必告诉数组它应该在什么位置?Matlab语言中是否存在类似于c ++中的“push_back”函数的东西,它只是将你的元素放在向量的末尾?

4

2 回答 2

3

您可以将索引与end

a_struct = struct('x', 1);
a_struct(end+1) = struct('x', 2); % this writes the element to the `end+1`'th-position
disp(a_struct)

会给你:

1x2 struct array with fields:
    x

但请注意,在幕后没有任何预分配,因为可能有 c++ 向量等。所以每次分配end+1都会在内部导致使用一个附加元素制作旧结构的副本。有关对此的评论,请参见例如http://blogs.mathworks.com/loren/2008/02/01/structure-initialization/#7

于 2013-08-12T08:30:21.603 回答
0

听起来您想迭代地扩展数组(向量)。这在 MATLAB 中是非常低效的,因为随着向量的增长,它会导致大量的重新分配。

在 MATLAB 中,最好预先分配向量(大小正确)并直接对其进行索引,或者使用arrayfun构造数组。

这与std::vector中的问题完全相同,与.std::back_inserterpush_back()

于 2013-08-12T08:30:46.357 回答