如何在MATLAB中将逻辑稀疏矩阵转换为整数稀疏矩阵?

时间:2014-01-28 01:40:09

标签: matlab matrix sparse-matrix

我有一个矩阵https://www.cise.ufl.edu/research/sparse/matrices/Hamm/add20.html 我想把它看作相应图形的邻接矩阵,所以我用1替换每个非零元素:

A = A ~- 0

现在我要计算A * A. 但我不能因为

>> A*A    
Error using *
Both logical inputs must be scalar.
To compute elementwise TIMES, use TIMES (.*) instead

我出于某种原因我不能只将逻辑矩阵转换为整数

>> uint(A)
Error using numerictype (line 172)
Invalid arguments (WordLength must be a scalar numeric value).

Error in fixdt (line 186)
        embeddedType = numerictype( varargin{:} );

Error in uint (line 14)
DataType = fixdt(0,WordLength,0);

我可以通过来回转换矩阵到满级来实现,但这对我的任务来说是不切实际的。

1 个答案:

答案 0 :(得分:1)

首先,您希望使用uint8或类似内容,而不是uint - 请阅读帮助文件,了解差异是什么,uint不会对您做什么认为它确实如此。但是,根据this论坛帖子,唯一有效的稀疏数据类型是doublelogical。你有一个逻辑矩阵,但似乎没有为逻辑矩阵定义稀疏矩阵乘法。因此,您必须先将A转换为双精度形式,然后才能将其乘以它。

或者,使用A^2代替 - 这将适用于逻辑稀疏矩阵。不知道为什么会有所不同。