我有一个矩阵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);
我可以通过来回转换矩阵到满级来实现,但这对我的任务来说是不切实际的。
答案 0 :(得分:1)
首先,您希望使用uint8
或类似内容,而不是uint
- 请阅读帮助文件,了解差异是什么,uint
不会对您做什么认为它确实如此。但是,根据this论坛帖子,唯一有效的稀疏数据类型是double
或logical
。你有一个逻辑矩阵,但似乎没有为逻辑矩阵定义稀疏矩阵乘法。因此,您必须先将A
转换为双精度形式,然后才能将其乘以它。
或者,使用A^2
代替 - 这将适用于逻辑稀疏矩阵。不知道为什么会有所不同。