問題タブ [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 - 空間行列の乗算後のインデックス位置の検索。実装されたbsxfun
複雑な行列の乗算の後で、行列と 2 つのベクトルのいくつかのインデックス位置を見つけるのに助けが必要です。我慢して最初に読んでください。私の質問は最後にあります。
私は2つの行列を持っていL1ますL2:
L1のすべての値と のすべての値の差 (列単位) を計算する必要がありますL2。これも列単位の形式で、次のように行います。
第一歩
最後に、新しいマトリックスがありLBRます:
今、私は 2 つのベクトルを持っておりalpha、beta-同じステップ サイズの閉じたドメインで指定されています。この場合、それらは同じです-。
ここで、テンソル積を計算する必要があります。次の 2 つの方法で実行できます。
ステップ2
最初の方法:
または、from matlabを使用する2 番目の方法:bsxfun
私の問題:
次の方法でを見つける必要がありますmin-distance。まず、もちろん 3 つの定数があります。
はmin-distance次のように計算されます。
ステップ 3
この問題を満たしているL1、L2、alphaおよびのインデックス位置が非常に必要です。betamin-distance
私は次のことを試しました:
ステップ 4
しかし、うまくいきません。あなたが私に提供できるすべての助けに感謝します!
前もって感謝します。
performance - MATLAB で repmat を bsxfun に置き換えます
次の関数では、高速化するためにいくつかの変更を加えたいと考えています。それ自体は高速ですが、forループで何度も使用する必要があるため、時間がかかります。repmat を bsxfun に置き換えると速くなると思いますが、よくわかりません。これらの置換を行うにはどうすればよいですか
それは本当に私の機能をスピードアップしますか?
performance - bsxfun と GPU を使用して、matlab でネストされたループをベクトル化する
for ループは非常に遅いように見えるので、次に示すコードのネストされたループを使用してベクトル化できるかどうか、またbsxfunGPU も導入できるかどうか疑問に思っていました。
コード
編集1: n定数としてもdenom想定できます。
arrays - MATLAB: 配列入力でベクトル入力関数を実行する効率的な方法
HermitePCECoefficients列ベクトル を含む複数のパラメータを入力として取り、 と同じ長さyの列ベクトル を出力する関数があります。Coefficientsy
これが列ベクトルでyはなく 2D 配列 (行列) でありHermitePCECoefficients、その各列で実行し、対応する出力を配列に格納するとします。ループでそれを行うのforは単純明快ですが、永遠に時間がかかります:
したがって、私bsxfunは仕事に就きました。二項関数でのみ機能するためbsxfun、「ダミーの」二項関数 f を作成しました。これは、実際には単一の引数の関数にすぎません。
次に、次のbsxfunように使用します。
これは問題なく動作し、ループよりもはるかに高速ですfor( について心配する必要はありませんomega_f。長さが の列数に対応する単なるベクトルですy)。
bsxfun質問 1: これは、このコンテキストで使用する正しい方法だと思いますか?
質問 2: より良い解決策は、 を直接変更HermitePCECoefficientsして、ジェネリック配列yを入力として使用できるようにすることです。y関数内で、これは列ベクトルである必要がある唯一の行です。
weightsとPsiは 2 つの列ベクトルなので、 array を渡すとy、MATLAB は文句を言います。それを変更する方法に関する提案はありますか?
matlab - MATLAB: bsxfun が不明です。セグメント間の最小距離を加速したい
MATLAB を使用して、3+3=6 の初期座標と終点座標を持つ N 個のセグメントを表す数値の Nx6 配列を想像してください。
入力として 2 つの1x6function Calc_Dist( Segment_1, Segment_2 )配列を受け取る があり、いくつかの操作の後にスカラー、つまりこれら 2 つのセグメント間の最小ユークリッド距離を返すとします。
リストのすべての N 個のセグメント間のペアごとの最小距離を計算したいのですが、二重ループを避けたいです。
MATLABの関数のドキュメントに頭が回らbsxfunないので、これを機能させることができません。最小限の例のために(距離の計算は明らかに正しくありません):
そしてメイン
これを行う方法はありますか、または二重ループを使用する必要がありますか?
ご提案ありがとうございます
matlab - bsxfun を匿名関数と要素ごとの減算で使用して配列を生成する - MATLAB - MathWorks 日本
次のコードがあります。
原則として、無名関数fは異なる形式を持つことができます。2 つの配列を作成する必要があります。
n x s x sまず、汎用要素を使用してサイズの配列を作成する必要があります
どこi=1,...nでj,k=1,...,s。私が簡単にできることはbsxfun、たとえば、を使用して行列を構築することです
しかし、3Dこれらの 2 つの行列の各列を要素ごとに乗算して、それらを配列に結合する必要があります。
2 番目のステップでは、 size の配列を作成する必要がありますn x 3 x s x s。これは、一方から見ると次の行列のようになります。
ここでi=1,...s、j=1,...s。次のようなもので2つの余分な次元をループできます
ループを回避する方法はありますか?
3 番目のステップでは、配列 (最初のステップからの出力) を取得した後、次元out1の新しい配列を作成したいとします。この配列には、主対角線上に元の配列が含まれます。つまり、 and for allです。「対角配列」を作成するための代替手段はありますか? または、ゼロの配列を作成する場合、主対角線を配置する方法はありますか?out3n x n x s x sout1out3(i,i,s,s) = out1(i, s, s)out3(i,j,s,s)=0i~=jdiagn x n x s x sout1
bsxfun - matlab - 配列をインデックス値に変換する
a = [1, 7] と b = [4, 10] を指定して、新しいベクトル [1:4,7:10] を作成します。ループでこれを行うことができますが、ベクトル化されたソリューションを探していました。次の関数 fun = @(c,d) c:d を定義して bsxfun を使用しようとしましたが、次に bsxfun(fun, a, b) を使用しました。1:4 を生成しますが、7:10 は生成しません。ありがとう。