【问题标题】:Sparse 3D matrices in MatlabMatlab中的稀疏3D矩阵
【发布时间】:2013-04-12 08:10:55
【问题描述】:

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

【问题讨论】:

  • 您能解释一下什么是“3d rgb 直方图”吗?也许,您是指每种颜色一个条形的直方图吗?
  • rgb 直方图有红色、绿色和蓝色(每个从 0 到 255)绘制为 x、y 和 z 轴。我有一个图像。每个 (r,g,b) 值的像素数绘制在空间中。把它想象成一个包含一些点的立方体。但是立方体的大部分是空的。我想知道是否有办法在不丢失有用数据的情况下缩小立方体。
  • 您能附上您的代码吗?
  • 您可以尝试增加直方图中 bin 的大小。
  • 你打算用直方图做什么?

标签: matlab matrix 3d sparse-matrix


【解决方案1】:

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

众所周知,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

【讨论】:

    猜你喜欢
    • 2013-04-11
    • 1970-01-01
    • 1970-01-01
    • 2012-04-02
    • 2017-07-02
    • 2012-06-20
    • 1970-01-01
    • 2014-05-12
    • 1970-01-01
    相关资源
    最近更新 更多