問題タブ [accumarray]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
4782 参照

matlab - 行列を`val`として取るaccumarray()はありますか?

accumarray()val引数はベクトルでなければなりません。私の場合、行列の列を合計(または平均)する必要があります。これを実現する機能や方法はありますか?

私が今していることは、forループで、列の値を個別に合計しています。

0 投票する
0 に答える
292 参照

matlab - matlab の accumarray コマンド

通常、次の方法でループを使用して行っている計算を実行したいと思います。

代わりに accumarray コマンドを使用します。

そのようにNを計算する方法を誰かが指摘できますか?

0 投票する
1 に答える
280 参照

matlab - AccumarrayをStructアレイで動作させる方法は?

これはできますか?基本的に、struct array val(カスタム構造のリストを含む)があり、カスタムmultiply関数Multiplyを使用してすべての要素を乗算したいのですが、ループは使用しません。

で使用しようとしaccumarray(indx, val', [1 1], @Multiply)ましindx=ones(lengths(val), 2)たが、これは機能しません(少なくともOctave 3.4.3では)。実行すると、C=Multiply(A,B)関数内でAに構造体配列全体が渡され、通常の場合のようにAが配列の最初の要素でBが2番目の要素である代わりにBが空になります。

ここで自分自身を明確にしたことを願っています。ありがとう

0 投票する
1 に答える
61 参照

arrays - accumarray 内の関数

日付の列とデータの列がある場合、次のコードを使用して、3 番目の列にあるように、各日付のデータの累積合計を求めます。


ここで、1 日の各データ ポイントをその日のデータの合計で割りたいと思います。例えば:

私が試してみると:

これにより、2 番目の列全体がそれぞれの合計で除算されます。これを制限して、毎日 2 番目の列のメンバーに対してのみ分割が行われるようにする方法はありますか?

0 投票する
0 に答える
181 参照

matlab - accumarray(subs, val) ここで val はゼロです

vv各ティックの市場ボリューム データを含むベクトルと、異なる minuteIdx分のインデックスを含むベクトルがあります。accumarray次のように、各分内のボリュームを合計するために使用しています。

通常は問題なく動作しますが、1 分間にすべてのティックのボリューム データを取得できず0、ボリューム ベクトルに s が含まれることがあります。これにより、minuteVolumesすべてのゼロを削除したため、ベクトルが他の場合よりも短くなります。たとえばvv、a で始まる場合1(最初の 1 分間にティックが 1 つしかない場合)、minuteVolumes は長くなりますが、a で始まる175ように変更すると、長くなるだけです。ベクトルを短くするのではなく、ベクトルにaを表示したい。これを実現する賢い方法はありますか?私の当初の論理では、取引が発生するためにはボリュームがゼロではない必要がありましたが、時折発生する悪いデータは考慮していませんでした。vv0minuteVolumes1740minuteVolumes

0 投票する
1 に答える
329 参照

matlab - Fun depending on order of subs and values in accumarray

In accumarray() the first note about 'subs', first appeared in the MATLAB R14sp3 docs, says:

Note If the subscripts in subs are not sorted, fun should not depend on the order of the values in its input data.

It is not clear to me what is considered to be sorted. Suppose:

  1. shall subs be sorted in the sense issorted(subs,'rows'), or ...
  2. in the linear indexing sense, i.e. issorted(sub2ind([2 2],subs(:,1), subs(:,2)))

I would like to rely on:

If somebody could also provide examples/tests from older releases (to check for backward compatibility) where e.g. 1) is false while 2) is true, that would be great.

PS. I am mostly not interested in alternatives to accumarray, unless very succinct and using the same subs and val.

0 投票する
1 に答える
1003 参照

matlab - matlab の行列値のグループ化と合計 (関数の評価)

ここの多くのスレッドaccumarrayは、インデックス セットによって値をグループ化 (および計算) するための matlab の答えであることを示しています。これは高速で問題なく機能するため、より大きな (ND) データ フィールドには同様のものが必要です。
例を想定してみましょう: 内部に (一意ではない) 名前を持つ名前ベクトルと、列ごとに異なるプロジェクトの収益のデータ ベクトルがあります。

次に、各名前の列の合計を計算します。
さて、インデックスを見つけることができます

しかしその後、明らかな呼び出し

動かない。もちろん、一意の名前または行に対して for ループを使用することもできますが、それは少し非効率的かもしれません。より良いアイデアはありますか?
さらに私は試しました

しかし、これは実装されておらず、結果として

accumarray の使用エラー
2 番目の入力 VAL は、完全な数値、論理、文字ベクトルまたはスカラーでなければなりません。

アイデアをありがとう。

追加: eitan-tのソリューションに感謝します。これは、この例に最適です。
とても悲しいことに、私の最小限の作業例はすべてのニーズを示していませんでした: 私が適用したい関数は、行全体または後で完全な maxtrix を必要とし、3 番目またはそれ以上の次元でグループ化する必要があります。

M多分それをより明確にするために:サイズのマトリックスa x b x cと各エントリがa名前などに対応していると考えてください。私の必要性は、たとえば、すべての一意の名前を合計することで最もよく説明されています。
素朴なプログラミングは

これは明らかですか?ここに解決策はありますか?