首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在java矩阵工具包(MTJ)中创建行向量

在java矩阵工具包(MTJ)中创建行向量
EN

Stack Overflow用户
提问于 2011-04-28 22:34:40
回答 2查看 1.3K关注 0票数 0

我需要实现一个乘法公式,其中一个大小为'n‘的行矩阵要乘以一个n*n矩阵。

我已经使用DenseMatrix类从2D array...but创建了n*n矩阵我的问题是如何创建一个行向量...

我可以使用CompRowMatrix类为它创建一个行矩阵,输入必须是‘matrix...but’..但是矩阵是一个接口..无法实例化 CompRowMatrix class 状态的第一个构造函数它需要一个‘非零索引数组’因为input..but我无法理解这个非零索引数组是什么??

另外,我可以用 DenseVector 或任何其他合适的class..but来创建一个向量,似乎没有一种方法可以将一个向量与一个矩阵直接相乘。

请帮助

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-03-06 07:01:05

CompRowMatrix类实际上并不打算用作行向量,而是用来表示稀疏矩阵,这样就可以很容易地逐行迭代矩阵元素。

虽然可以通过将第一行以外的所有行都设置为0来使用CompRowMatrix作为向量,但对于程序员来说,这会更加复杂,并且对于必须假设其他行可能变为非零的代码来说,效率会更低。

相反,可以使用DenseVector对象来保存行向量,并使用Matrix接口中的mult方法。它接受两个Vector对象作为参数,并生成一个向量矩阵乘积。在与以下参数相乘的矩阵对象上调用该方法:

  • 1arg,x是要与矩阵相乘的向量
  • 2arg,y,保存multiplication

的结果

因此,要生成向量矩阵乘积y = x*A (其中xy都是1xn行向量,Anxn矩阵),您可以这样做:

代码语言:javascript
复制
// create matrix A
double[][] matValues = new double[n][n];
... // initialize values of the matrix
Matrix A = new DenseMatrix(matValues);

// create vector x
double[] vecValues = new double[n];
... // initialize values of the vector
Vector x = new DenseVector(vecValues);

// create vector y to store result of multiplication
Vector y = new DenseVector(n);

// perform multiplication
A.mult(x, y);

现在,您可以根据需要在其余代码中使用y。在乘法之前分配y很重要,但它保存什么数据并不重要。mult方法将在退出时覆盖y中的所有内容。

还要注意,我选择的初始化xA的方法并不是唯一可用的方法。例如,上面的代码在构造相应的VectorMatrix对象时自动深度复制数组vecValuesmatValues。如果您不打算将数组用于任何其他目的,那么您可能不应该执行此深度复制。您可以通过在构造函数中传递一个设置为false的额外布尔参数来完成此操作,例如

代码语言:javascript
复制
// create matrix A without deep copying matValues
Matrix A = new DenseMatrix(matValues, false);

您应该参考您和我之前链接到的javadoc,以获得更多构造函数选项。但是,请注意,上述javadoc的版本与当前版本的MTJ不同(本文发布时的版本为1.01 )。我不知道它是针对哪个版本的,也无法找到当前版本的javadoc,但我确实发现了它与current source code之间的一些差异。

票数 4
EN

Stack Overflow用户

发布于 2011-09-27 23:21:09

如果我理解你的问题,一种解决方案是创建一个一行n列的矩阵来预乘n x n矩阵。有一些用于向量乘法的例程,但我相信它们都有对矩阵进行后乘法的向量。如果您希望使用这些例程,则必须进行适当的转置。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5820296

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档