問題タブ [vectorization]
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.
r - Rでベクトルの要素の順次更新をベクトル化することは可能ですか?
次のようなコードをベクトル化することは可能ですか?
これは些細な例ですが、アイデアを説明するのに役立ちます。
for
ベクトルの i 番目の値が (i-1) 番目の値に依存するコードを記述する必要があることがよくあります。可能であれば、プロファイリングがこの型の関数を示唆しているため、ループを必要とせずにこれを記述したいと考えています。私のコードの主要なボトルネックです。
この操作はベクトル化できるのでfor()
、計算でループを使用する必要はありませんか?
r - これを for ループでベクトル化します (現在の行は上の行に依存します)
事前に生成されたプラス/マイナス 1 の行列 (100x3) を指定して、n=3 のランダム ウォーク パス (パス長 = 100) を作成するとします。最初のパスは 10 で始まり、2 番目は 20 で、3 番目は 30 で始まります。
set.seed(123)
given.rand.matrix <- replicate(3,sign(rnorm(100)))
path <- matrix(NA,101,3)
path[1,] = c(10,20,30)
for (j in 2:101) {
path[j,]<-path[j-1,]+given.rand.matrix[j-1,]
}
最終値 (seed と rand 行列が与えられた場合) は 14、6、34 です...これは望ましい結果です...しかし...
質問: for ループをベクトル化する方法はありますか? 問題は、計算時にパス マトリックスがまだ完全に入力されていないことです。したがって、ループを置き換えると、
path[2:101,]<-path[1:100,]+given.rand.matrix
ほとんどの NA が返されます。このタイプの for ループが R で回避可能かどうかを知りたいだけです。
事前にどうもありがとうございました。
matlab - 2 つのベクトルの関数呼び出しをベクトル化します (行列をベクトルの配列として扱います)
ベクトルのセット間の累積コサイン距離を計算したいと考えています。
ベクトルのセットの自然な表現は行列です...しかし、次をベクトル化するにはどうすればよいですか?
もちろん書けます
...行列をベクトルのセル配列として再キャストする限り。より良い/完全に数値的な方法はありますか?
また、cellfun、arrayfun などはベクトル命令やマルチスレッドを利用しますか?
現在の会社ではおそらく余分ですが、列ベクトルに対してv1'*v2 == dot(v1,v2)
は不要であり、Matlab では大幅に高速であることに注意してください。
matlab - Matlab を使用して加速度計データを速度と位置に統合する
テスト加速度計データがあり、速度と位置を見つけるために Matlab を使用する必要があります。ただし、曲線の下の累積面積だけでなく、速度と位置の両方の実際のデータ ポイントが必要です。私は使用しているサンプル データを持っており、かなり長い特定のベクトル化コーディングによってこれを達成できましたが、より一般的な方法を見つける必要があります。離散データがあり、エラーを許容できないため、曲線近似を使用して面積を推定することはできません。基本的に各長方形の面積を計算するこの方法は、最も正確な方法です。これまでのところ、以下の試みがあります。
私はこれをすべて手作業で解決し、紙とMatlabの両方でグラフ化し、上記の作品を作成しました。ただし、データセットの長さはさまざまであるため、長期的には機能しません。サンプリング レートを維持しながらベクトルの長さに合わせてインデックスを簡単に変更できるため、ループを使用してこの問題を解決しようとしましたが、実際のデータ ポイントを出力することができませんでした。上記の一般的な形式が必要です。
10回目なので繰り返しあります。VelocityL は、DeltaVelocityLoop とまったく同じベクトルを返します (目標である前の領域の合計なし)。VelocityLL は単純に、ベクトル Acceleration の長さで書かれた曲線の下の合計面積を返します。この障害を回避する方法について何かアイデアがあれば教えてください。
c - GCCがこのループを自動ベクトル化しないのはなぜですか?
私は次のCプログラムを持っています(同じ動作を示す実際のユースケースの簡略化)
でコンパイルすると
出力を取得します
ここで、10は内側のforループの行です。なぜこれが表示されるのかを調べたところ、ポインタはエイリアス化できると言っているように見えましたが、__ restrictキーワードがあるため、コードに含めることはできません。彼らはまた、-msseフラグを含めることを提案しましたが、どちらも何もしていないようです。何か助けはありますか?
r - Rでのrepとseqのベクトル化
私は2つのことを成し遂げようとしています。まず、ベクトルがある場合1:5
、同じ数の2倍を含み、繰り返しを除く、これらの要素の一意の組み合わせを示す行列(または2つのベクトル)を取得します。
今、私はマトリックスを使用してこれを行うことができます:
しかし、もっと簡単な方法が必要です。で使用しようとしVectorize
ましseq
たが、エラーが発生します:
私がしたい2番目のことは、ベクトルを含むリストがある場合bar
、その要素の要素の数に等しい繰り返しリストの要素を含むベクトルを取得することです。私はこれを行うことができます:
しかし、やはりもっと簡単な方法があるはずです。ここで再試行Vectorize
しましたが、同じエラーが発生しました:
c - Cのベクトル化された三角関数?
高度に並列化された三角関数(1024程度のブロック)を計算することを検討しており、現代建築が持つ並列処理の少なくとも一部を利用したいと思います。
ブロックをコンパイルするとき
GCCはそれをベクトル化せず、
それは私には理にかなっています。ただし、並列三角関数の計算を行うためのライブラリがあるかどうか疑問に思っています。
11次の単純なテイラー級数で、GCCはすべてのループをベクトル化し、単純なsinループの2倍以上の速度を取得しています(ビット正確な回答、または9次のシリーズでは、1ビットのみ) 1600の値のうち最後の2つはオフ、3倍以上のスピードアップ)。誰かが以前にこのような問題に遭遇したことは確かですが、私がグーグルで検索したところ、ライブラリなどについての言及は見つかりませんでした。
A.すでに何か存在していますか?
B.そうでない場合、並列三角関数を最適化するためのアドバイスはありますか?
編集:「SLEEF」と呼ばれる次のライブラリを見つけました:http ://shibatch.sourceforge.net/このペーパー で説明されており、SIMD命令を使用していくつかの初等関数を計算します。SSEとAVX固有のコードを使用していますが、標準のCループに変換するのは難しいとは思いません。
r - パフォーマンスを向上させるために、これら 2 つの関数を最適化 (ベクトル化) することは可能ですか?
RI を使用する最初の試みで、あまりパフォーマンスの良くない 2 つの関数を書きましたが、パフォーマンスを向上させる (ベクトル化する) 方法についてヒントを得ることができれば幸いです。どちらの関数も最後に「テスト ケース」が付いています。
最初の関数は、2 つの時系列 xts オブジェクト x と y を取り、x が y よりも高い/低い日数に関するデータを含む系列を返します。
パフォーマンスの最適化に役立つ 2 番目の関数を以下に示します。この関数は、xts オブジェクト シリーズと、指定された時間におけるシリーズの最小値を計算する間隔の長さを表す xts オブジェクトをパラメーターとして取ります。この関数は、長さで設定された最小計算用に指定されたウィンドウで計算された系列の最小値を返します。
よろしくお願いいたします。
よろしく、サモ。
arrays - MATLAB でのベクトル化
V_t*e
i 番目の列がV_t = 1000*10^((i-1)/20)
で構成されるようなサイズ 121x101 のベクトルを作成しようとしていますe
。
明らかi
に 1 から 1 億 100 万まで変化させる必要がありますが、結果の最終値を生成するだけでなく (コマンドを繰り返さずにすべての列にこれを適用する)、マトリックスに適用するにはどうすればよいでしょうか?
arrays - matlabベクトル化可変配列
行/列番号に関してマトリックス内の行または列を変更する背後にある基本的な考え方がmatlabにあることを誰かに教えてもらえますか?特定の行列のすべての列を次のように置き換えようとしています
エラーはすべての行に関していくつかの列を置き換えようとすることにあることを知っています。repmatを使用した別のより単純な方法を見てきましたが、上記のような方法があるかどうかを知りたいです。ありがとう。