【问题标题】:Sparse Matrix/ Inner Matrix Dimension稀疏矩阵/内矩阵维度
【发布时间】:2011-02-24 05:29:42
【问题描述】:

好吧,试着用搜索引擎做点什么。

我从 5 个文档的集合中生成了一个矩阵(术语文档)。输出是:

docs= (5,1) 1.0000 (1,2) 0.7071 (3,2) 0.7071 (1,3) 0.7071 (5,3) 0.7071 (3,4) 1.0000 (4,5) 1.0000

另外,我从用户查询中生成了一个查询矩阵。

q= (1,1) 1 (2,1) 1

我正在尝试查找文档集与应用向量空间建模的用户查询的相似性。代码如下:

% docs is a sprase matrix presenting a number of document.
sc=zeros(1, n); doc_inds=zeros(1, n);

% q is the user query. 
sc=q'*docs;

%sort documents according to their
similarity coefficient with the query
[sc, doc_inds]=sort(sc);
sc=sc(end:-1:1);doc_inds=doc_inds(end:-1:1);

sc=q'*docs; 行总是产生错误:???内部矩阵维度必须同意。

谁能帮我想办法解决它?珍惜你的时间。

【问题讨论】:

    标签: matlab sparse-matrix


    【解决方案1】:

    根据您示例中的数据,docs 是 5x5,q 是 2x1。矩阵乘法q'*docs 正在尝试将 1x2 矩阵与 5x5 矩阵相乘。矩阵乘法要求第一个矩阵的第二维与第二个矩阵的第一维一致,因此您得到的错误。

    为什么要在sc=zeros(1, n); 行定义sc,然后用这个矩阵乘法覆盖它?

    【讨论】:

    • 我了解矩阵维度要求。但是,我无法控制尺寸,它们通常会有所不同。公式要求它们相乘。@b3,声明变量的大小不是一个好习惯吗?
    • @Tinglin - 如果不了解算法的更多信息,真的很难评论。看来你需要检查你的假设。查询和文档矩阵必须是可乘的,或者必须更改算法。
    • 我现在将通过假设。感谢您指出。如果我找不到任何东西,我会发布它以供您和其他人了解。
    • 非常感谢。我发现了问题。当我生成查询矩阵时,我使用了错误的变量。那改变了维度。现在工作正常。我明白了,这与稀疏矩阵无关。这只是矩阵乘法的基本规则。
    猜你喜欢
    • 1970-01-01
    • 2020-10-16
    • 2018-01-19
    • 1970-01-01
    • 1970-01-01
    • 2014-05-14
    • 2018-03-05
    • 1970-01-01
    • 2017-07-20
    相关资源
    最近更新 更多