問題タブ [jama]
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.
java - JAMAを使用して2つの1D行列を乗算するにはどうすればよいですか?
これは少しばかげた質問かもしれませんし、私もこの問題に取り組むための最良の方法を誤解しているかもしれませんが、私が本質的にやりたいことは次のとおりです。
次の行列を乗算して、結果を-0.8にします。ただし、理想的にはJAMA関数を使用してこれを実行したいと思います。これまでのところ、私は次のことを行っていますが、もうすぐそこにいると思います。これは、私が立ち往生している最後のステップにすぎません。
これに関するどんな助けも本当にありがたいです。前もって感謝します!
java - Jama ライブラリを使用した行列乗算
Jama ライブラリを使用して 2 つの行列を乗算したいのですが、次のように返されます。
私のコード:
java - JAMA またはそれ以外の Java SVD
ポイントのクラウドがあり、最適なラインが必要です。JAMA を使用していますが、理由がわかりません。何かが機能していません。仕組みがわからないのは多分私です。私は Nx3 マトリックス (これは JAMA svd がサポートするものです) を持っており、Svd から適切なマトリックス V を取得します。必要なベクトルは、最大特異値に対応する右特異ベクトル (行または列 ?) です。このベクトルは、主な方向を表すと想定されています。
すべてのベクトルは最大の正の値として y を持つと想定され、x は正または負の両方であり、z は負であると想定されます。しかし、取得したベクトルの y 値が負の場合や、とにかく間違った方向を指している場合があります。
私のポイントの雲はかなり規則的で、すべてがほぼy軸に沿って配置されています(zは小さく負です)。したがって、主な方向性は非常に簡単に見つけられるはずです。しかし、それはまだ正しく機能していません。
この場合、右の行列 V の行ベクトル (列ベクトルも試しました) を取得しています。すでに「pointSet」から重心を差し引いています。
たぶん何も考えていないのだと思います。Idk たぶん、別の手法または別のライブラリを使用する必要があります。
java - Java での svd の問題
私はジャマとコルト(Javaでコードを書いています)を経験しました。どちらも、行数が列数よりも多くなるような配列を使用することを期待しています。
しかし、潜在的意味解析 (LSA) の場合、5 冊の本があり、合計 1000 の奇妙な単語があります。用語ドキュメント マトリックスを使用すると、5*1000 マトリックスが得られます。
これは機能しないため、行列を転置する必要があります。転置では 1000 * 5 を使用します。1000*5 で svd を実行すると、 5*5 の S 行列が得られます。次元削減を実行するには、この 5*5 行列は小さく見えます。
何ができますか?
java - このコードをスピードアップする方法は?行列の行と列を反復する微積分
行と列を反復処理することで行列の計算を実行するコードがあります。実行された微積分の一部は、インターネットで見つけたコードを使用したコサイン距離測定です(現在リンクを取得できませんでした)。
10,000行と列が存在する可能性があります。行列は対称なので、半分だけ繰り返す必要があります。値はfloatです。
問題:それは非常に遅いです(それは3から6時間かかるようです)。誰かが私に改善点を指摘できますか?どうも!
コードに関する注意:柔軟性のために抽象クラスを使用します。このように、別のクラスで定義された正弦計算を別のクラスに簡単に置き換えることができます。
コード:
実行する計算を定義するクラス:
java - 画像を圧縮しようとすると表示される色付きのピクセル(写真を含む)
特異値分解を使用して特定の画像を圧縮しようとしています。プロセス全体でゴミの色のピクセルが表示され続けることに気付くまで、私はそれを持っていると思っていました。

右上に表示されている数値は、反復回数を示しています。ここで、0は元の画像です。
これは一般的なエラーですか?足りないものはありますか?
それは私の数学そのものに関係しているのではないかと思います。これを処理するJavaマトリックスパッケージであるJAMAを使用しています。以下は、各反復の実装です。
基本的に、私がしている(またはしようとしている)ことは次のとおりです。
私の実装に明らかに何か問題がありますか、それともJAMAがSVDを実行する方法が原因である可能性がありますか?私がテストしたところによると、行列UとVの値の符号は、WolframalphaまたはMatlabによって生成されたものとはいくつかの行で異なります。
どんな助けでも大歓迎です。
ありがとう、
ユスティニアヌス
java - Java で 2 つの行列を乗算する
私は2つの行列を掛けようとしています。私はRソフトウェアで試しました: このスレッドをチェックしてください: Multiplying two matrixs in R
今、私はJavaで同じことをしようとしています。
マトリックスにはJamaライブラリを使用しています。
私のパワー関数
表示mat1はいつですか:
それ以外の
Rと一緒に
}
私は得る
java - Jama getS が例外を与える
既に作成した用語文書マトリックスに SVD を適用しています。マトリックスは次の形式の double 配列です。
public static double[][] tdidf;
tdidf = new double[listOfFiles.length][keywordList.size()];
しかし、私がsvdをアップルするとき:
public void computeSVD()
{
マトリックス A = 新しいマトリックス(tdidf); SingularValueDecomposition svd = A.svd();
マトリックス U = svd.getU();
行列 S = svd.getS();
}
私はエラーが発生しています:
スレッド「メイン」での例外 java.lang.ArrayIndexOutOfBoundsException: 53
at Jama.SingularValueDecomposition.getS(SingularValueDecomposition.java:511)
at TDIDF_Matrix.computeSVD(TDIDF_Matrix.java:119)
at Jama.main(Jama.java:191)
SVD を計算する前に A を転置する必要がありますか?