2

Matlabでは、単純な構造があり、この構造の配列を作成したいと思います (これを行う方法を知っています)。私の質問:配列にどの位置にあるべきかを伝えることなく、その配列に要素を単純に挿入する方法はありますか? ベクトルの最後に要素を配置するだけの c++ の「push_back」関数に似たものは、Matlab 言語に存在しますか?

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は、内部的に 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 に答える