0

matlabを初めて使用し、このコード行を理解するのに問題があります

A((i-1)*nneg+1:i*nneg,:) = 
ones(nneg,1)*temp(i,2:n+1)+
temp(npos+1:npos+nneg,2:n+1);

(i-1)*nneg+1これは、-> xが:と上限の間で変化しているAの各要素、 i*nnegおよびすべてのyに対して、1*....が割り当てられることを意味します。

an element from temp or all elements in the range of the y(temp(i、2:n + 1))?

同じ理由で、temp(npos + 1:npos + nneg、2:n + 1)の範囲の1つ、またはすべてを合計しますか?

4

1 に答える 1

1

このコマンドは、Aの水平部分行列を更新します

A(a:b, :) = some range of rows, and ALL columns = some horizontal sub-matrix of A
A(:, c:d) = some range of columns, and ALL rows = = some vertical sub-matrix of A

アップデート:

あなたのコードをもっと見ることなく、私は確信が持てませんが、構文はtemp(npos + 1:npos + nneg、2:n + 1)が行列であり、ones(nneg、1)* temp(i、2: n + 1)はオフコースであり、1のみを含む同じサイズの行列でもあります。

(i-1)* nneg+1とi*nnegは両方とも整数になります。ここで、(i-1)* nneg + 1 <= i*nnegです。これらの2つの整数は、値が更新されるAの部分行列を定義します。

ones(nneg、1)は、長さがnnegの1の垂直配列[1,1,1,1...]を作成します。次に、これに水平配列temp(i、2:n + 1)を掛けて、行列Xを作成します。Xは別の行列temp(npos + 1:npos + nneg、2:n + 1)に追加され、 -Aの行列(上記で説明)は、この結果で更新されます。

于 2013-03-26T13:45:44.070 に答える