1

サイズの異なるいくつかのベクトルを配列にまとめたいと思います。ベクトルの1つがプログラムから外れるたびに、それを配列に追加したいと思います。このような:

array = [array, vector];

最後に、この配列を関数の出力にします。しかし、それは私に間違った結果をもたらします。これはMATLABで可能ですか?

よろしくお願いします、ダミアン

4

1 に答える 1

5

さて、異なるサイズの列ベクトルを扱っていることを考えると、数値配列は長方形でなければならないため、それらすべてを数値配列に入れることはできません。それらを本当に数値配列に入れたい場合は、配列の列の長さを最長のベクトルの長さにする必要があり、短いベクトルをNaNで埋める必要があります。

これを考えると、chaohuangがコメントで示唆したように、セル配列を使用し、各セルに1つのベクトルを格納するのがより良い解決策になります。問題は、ベクトルがいくつあるかを事前に知らないことです。この問題について私が知っている通常のアプローチは次のとおりです(しかし、誰かがより良いアイデアを持っているなら、私は学びたいと思っています!):

UpperBound = SomeLargeNumber;
Array = cell(1, UpperBound);
Counter = 0;
while SomeCondition
    Counter = Counter + 1;
    if Counter > UpperBound
        error('You did not choose a large enough upper bound!');
    end
    %#Create your vector here
    Array{1, Counter} = YourVectorHere;

end
Array = Array(1, 1:Counter);

つまり、ループ内で上に行かないように事前に上限を選択し、ループが終了したらセル配列をサイズに縮小します。また、上界の選択が小さすぎることが判明した場合に備えて、エラートラップを設定しました。

ああ、ちなみに、私はあなたの質問で「いくつかのベクトルを合計する」という言葉に気づきました。これは比喩的なものでしたか、それとも実際にsumどこかで操作を実行したかったのですか?

于 2012-09-21T07:53:21.777 に答える