0

重複の可能性:
Matlabで、ネストされたforループから生成された値を配列に格納する方法は?

私は数字の配列を持っています。例: x = [4,9,8]。find(x) を使用して [1,2,3] を取得し、次に find(x)+length(x) を使用して [4,5,6] を取得します。

これ(この場合、配列に3を追加して、1,2,3 4,5,6 7,8,9 ...のシーケンスを作成)をn回実行したいので、ループ。

配列 x を使用して、[4,9,8] を [1,2,3] に加算すると、[5,11,11] が得られます。

[1,2,3]...[10,11,12]...[n,n+1,n+2] from find(x)+length(x) をループして、要素を追加したいx で対応する位置の要素に、3 で上に行く配列で。

したがって、たとえば、[4,5,6] 5 は位置 2 にあります。x=[4,9,8]。9 は x 内の位置 2 にあります。したがって、5 に 9 を追加します。これを各要素 (この場合は 3 つの要素のそれぞれ) に対して行います。両方の数値がそれぞれの配列の位置「2」にあるため、9 を 11 に追加し、9 を 11 に追加します。

find(x)+length(x) を処理するために、ネストされた for ループを使用することを考えていました。「場所の追加」を行う方法がわかりません。

次に、追加の結果を別の配列に保存したいと思います。

お時間をいただきありがとうございます。

4

1 に答える 1

1

だから、私たちはから始めます

x = [4,9,8]

追加しましょう[1, 2, 3]

x + [1, 2, 3]
ans =
     5    11    11

より柔軟な方法

x + (1 : length(x))
ans =
     5    11    11

1 から開始するのではなく、b(たとえば、 に追加[5, 6, 7]xます) から開始する場合:

b = 5;
x + b + (0 : length(x) - 1)
ans =
     9    15    15

これでうまくいくと思います。今すぐループを追加できます。

警告:の使用方法が非常に奇妙find()です。念のため:find(x)のゼロ以外のエントリのインデックスを返しますx。ベクトルのすべての要素xが非ゼロの場合、次の式が得られます

find(x) == 1 : length(x)

のいずれかの要素xがゼロの場合、 に追加するときに問題が発生しますfind(x)

x = [4, 9, 0, 8];
find(x)
ans =
     1     2     4

x + find(x)
Error using  + 
Matrix dimensions must agree.
于 2012-09-05T07:18:05.210 に答える