2016-12-05 104 views
1

我有兩個相同大小的稀疏矩陣「Matrix1」和「Matrix2」p x n在日誌中顯示兩個具有相同顏色條的圖像

通過稀疏矩陣我的意思是它包含大量的零元素。

我想在同一個顏色表和一個唯一的顏色條下顯示兩個矩陣。在MATLAB這樣做很簡單:

bottom = min(min(min(Matrix1)),min(min(Matrix2))); 
top = max(max(max(Matrix1)),max(max(Matrix2))); 
subplot(1,2,1) 
imagesc(Matrix1) 
colormap(gray) 
caxis manual 
caxis([bottom top]); 
subplot(1,2,2) 
imagesc(Matrix2) 
colormap(gray) 
caxis manual 
caxis([bottom top]); 
colorbar; 

我的問題:

事實上,當我顯示了使用imagesc(Matrix)矩陣,它可以忽略總是出現用imagesc(10*log10(Matrix))的噪音(或背景)。

這就是爲什麼,我想顯示矩陣的10*log10。但在這種情況下,由於矩陣稀疏,最小值將爲-Inf。在這種情況下,caxis將發生錯誤,因爲底部等於-Inf

你對我有什麼建議?我如何修改上面的代碼?

任何幫助將不勝感激!

回答

1

非常重要的一點是矩陣中的最小值將始終爲0。利用這一點,解決您的問題的一個非常簡單的方法是在日誌操作中添加1,以便在原始矩陣中映射到0的值也映射到log操作中的0。這可以避免遇到的-Inf錯誤。事實上,如果您願意,這是一種非常常見的傅立葉變換可視化方法。將1添加到對數中可確保變換在輸出中沒有負值,但其導數或其變化率保持不變,因爲該效果僅僅是將曲線向左移動1單位。

因此,只要做imagesc(10*log10(1 + Matrix));,那麼最小值總是在0範圍內,而最大值是無界的,但是受Matrix中看到的最大值的限制。

+1

謝謝你的回答:) – Christina

+0

@Christina我的榮幸:)祝你好運! – rayryeng

相關問題