0

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

4

1 回答 1

0

您最初的问题不是很清楚,因此我对其进行了重新表述,以使其更易于理解、可搜索和有用。我现在正在回答您的问题,以便将其从未回答列表中删除。

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

假设您要创建一个仅包含元素(1, 1, 1)and的稀疏矩阵,(1, 3, 50)并假设A(1, 1, 1) = 1and 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
于 2016-11-08T08:03:44.760 回答