問題タブ [bsxfun]
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.
matlab - カーネルの最小距離のベクトル化
N 個のキーポイントの位置を含む Nx2 配列と、画像のすべてのピクセルに座標をマップK1
する 3 次元の WxHx3 配列があります。Kart1(width,height,coordinates)
のすべてのキーポイントについてK1
、 のピクセルの位置を読み取り、そのKart1
周囲の 3x3 カーネルで座標を評価 (最小/最大を検索するか、平均を計算) し、 の現在のピクセルに値を割り当てますKPCoor1
。
私の現在のアプローチは次のようになります。
実行されますが、醜く、私がやりたいことをしているとは思えません。私は問題の「多次元性」に少し混乱しており、カーネルを評価するための多くの関数を知りません。また、bsxfun()
論理演算のようなベクトル化関数を使用する方法を考えることもできません (つまり、私は行き詰まっており、私の脳はドライ :/)
これらのループを排除する/コードを修正する方法に関する提案はありますか?
arrays - 1 つの個別のベクトルからの複数のベクトルの減算のベクトル化
次のコードをベクトル化するか、より効率的にしようとしています。
このコードの目的は、値 X を x の許容値の配列 (dxcp) と比較し、X を配列 dxcp 内の最も近い値に割り当てることです。例えば:
X は 9 に等しく、dxcp 配列は [ 1、2、3、6、10、20] です。2 行目は、X を 10 に変更します。
X を数値の配列として入力できるようにスクリプトを変更しようとしていますが、この場合に上記のコードを機能させる最も効率的な方法は何だろうと考えていました。もちろん、私は使用できます:
しかし、これをより効率的に達成する方法がなければならないと感じています。乾杯、nzbru。
arrays - 無名関数で bsxfun を使用する
bsxfun 関数を理解しようとした後、ループを避けるためにスクリプトに実装しようとしました。配列内の個々の要素が 1 つの行列に含まれているかどうかを確認しようとしています。それぞれ 1 と 0 を含む初期配列と同じサイズの行列を返します。私が作成した匿名関数は次のとおりです。
x は、言うまでもなく「受け入れられる値」を含むマトリックスです。y は入力配列です。これまでのところ、bsxfun 関数を次のように使用してみました。
myfunction が無名関数のハンドルと等しいこと、およびこれを達成するために bsxfun を使用できることは理解していますが、次のエラーの理由がわかりません:
次のテストデータを使用しています。
出力が次のようになることを願っています。
乾杯、NZBRU。
編集:15担当者に達したので、回答を更新しました
python - @times を含む bsxfun を numpy に変換する
これは私がOctaveに持っているコードです:
コードの bsxfun 部分は要素ごとの乗算を生成するので、それでうまくいくと思ったnumpy.multiply(X*Y, X)
のですが、例外が発生しました。少し調査したところ、要素単位の乗算は Python 配列では機能しないことがわかりました (特に、X と Y が "numpy.ndarray" 型の場合)。それで、誰かがこれをもう少し説明できるかどうか疑問に思っていました-つまり、別のタイプのオブジェクトへのタイプキャストは機能しますか? Octave コードが機能するので、線形代数の間違いがないことがわかります。bsxfun と numpy.multiply は実際には同等ではないと想定していますが、理由がわからないので、説明があれば素晴らしいでしょう。
ウェブサイトを見つけることができました!これにより、Octave から Matlab 関数への変換が可能になりますが、私の場合は役に立たなかったようです。
arrays - 3D 配列での次元単位の論理インデックス
stack
次元 NxMxRの配列があるとします。一時変数を使用せずに、特定のディメンションで論理インデックスを使用してその値を更新したいと考えています。
一時変数を使用した例:
条件が配列全体で同じであれば自明ですが、R
次元に沿って変化することに注意してください。bsxfun
次のような構文でしきい値を減算したい場合に適しています。
bsxfun
一時変数の使い方がぎこちなく、ループが行うことを行うための関数を定義する適切な方法を見つけることができません。
誰か提案がありますか?