2013-04-12 287 views
0

我正在使用Matlab。我有一個3d rgb直方圖,它存儲每個(r, g, b)值的像素數。三維矩陣非常稀疏。有沒有辦法在Matlab中處理稀疏的3D矩陣?我會被迫的。Matlab中的稀疏三維矩陣

+0

你能解釋一下什麼是 '3D RGB直方圖'?也許,你的意思是每個顏色有一個條形的直方圖? – tashuhka

+0

rgb直方圖具有紅色,綠色和藍色(每個從0-255)繪製爲x,y和z軸。我有一個形象。每個(r,g,b)值的像素數都繪製在空間中。把它看作是包含一些點的立方體。但是很多立方體都是空的。我想知道是否有辦法在不丟失有用數據的情況下縮小多維數據集。 – parth

+0

你能包括你的代碼嗎? – tashuhka

回答

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] 

如可以看出,mySp10元素的數組。第一個和第十個元素是稀疏矩陣,而其他元素是空的。非空的第一和第十稀疏矩陣可以被恢復爲

temp1 = mySp{1}; 
temp2 = mySp{10}; 

返回

>> temp1 

temp1 = 

    (1,1)  3 

temp2 = 

    (1,3)  54