我正在使用Matlab。我有一个3d rgb直方图,它存储每个(r, g, b)
值的像素数。 3d矩阵非常稀疏。有没有办法在Matlab中处理稀疏的3d矩阵?我将被迫。
答案 0 :(得分:0)
你原来的问题不是很清楚,所以我重新制定了它,使其更容易理解,可搜索和有用。我现在回答你的问题,将其从未答复的清单中删除。
众所周知,Matlab并不直接处理3D矩阵。解决方法是使用稀疏矩阵的单元数组。
假设您要创建仅包含元素(1, 1, 1)
和(1, 3, 50)
的稀疏矩阵,并假设A(1, 1, 1) = 1
和A(1, 3, 10) = 54
。您可以执行以下操作:
mySp{1} = sparse(3, 3);
mySp{10} = sparse(3, 3);
mySp{1}(1, 1) = 3;
mySp{10}(1, 3) = 54;
通过这种方式,
>> mySp
mySp =
[3x3 double] [] [] [] [] [] [] [] [] [3x3 double]
可以看出,mySp
是一个10
元素数组。第一个和第十个元素是稀疏矩阵,而其他元素是空的。非空的第一和第十稀疏矩阵可以恢复为
temp1 = mySp{1};
temp2 = mySp{10};
返回
>> temp1
temp1 =
(1,1) 3
和
temp2 =
(1,3) 54