Matlab中的稀疏3D矩阵

时间:2013-04-12 08:10:56

标签: matlab matrix 3d sparse-matrix

我正在使用Matlab。我有一个3d rgb直方图,它存储每个(r, g, b)值的像素数。 3d矩阵非常稀疏。有没有办法在Matlab中处理稀疏的3d矩阵?我将被迫。

1 个答案:

答案 0 :(得分:0)

你原来的问题不是很清楚,所以我重新制定了它,使其更容易理解,可搜索和有用。我现在回答你的问题,将其从未答复的清单中删除。

众所周知,Matlab并不直接处理3D矩阵。解决方法是使用稀疏矩阵的单元数组。

假设您要创建仅包含元素(1, 1, 1)(1, 3, 50)的稀疏矩阵,并假设A(1, 1, 1) = 1A(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