4

私が持っているとしましょう

A = [10 20 30 40];
idx = [1 1 1 2];
result = [0 0];

idxのインデックスでAを合計する必要があります。

result(1) = A(1) + A(2) + A(3);
result(2) = A(4);

コードを実装しました

for i=1:length(idx)
  result(idx(i)) += A(i);
end

可能であれば、ワンライナーで、よりオクターブ標準のコードに変換するにはどうすればよいですか?

4

1 に答える 1

2

accumarrayを見てください、それはあなたが求めていることを正確に行います、それは列として最初の入力を必要とするだけです:

A = [10 20 30 40];
idx = [1 1 1 2];
result = accumarray(idx',A)

  result =

      60
      40

はい、これはオクターブでも機能します;)(リンク

于 2012-10-21T13:27:22.827 に答える