2016-12-05 17 views
1

同じサイズの2つの疎な行列 "Matrix1"と "Matrix2"を持っていますp x nログに同じカラーバーを持つ2つの画像を表示

スパース行列は、正確にゼロの要素がたくさん含まれていることを意味します。

2つのマトリックスを同じカラーマップとユニークなカラーバーの下に表示したいとします。 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になります。これを利用して、問題を解決する非常に簡単な方法は、元の行列の0にマップされた値が操作で0にマップされるように、ログ操作内に1を追加することです。これにより、発生しているエラー-Infが回避されます。実際、これはフーリエ変換を可視化する非常に一般的な方法です。 1を対数に加えると、変換には負の値は出力されませんが、微分値またはその変化率はそのまま残っています。これは単に左の1単位の曲線の変換です。

したがって、単純にimagesc(10*log10(1 + Matrix));を実行すると、最小値は常に0に制限されますが、最大値は制限されませんが、Matrixに表示される最大値になります。

+1

ありがとうございました:) – Christina

+0

@Christina私の喜び:幸運! – rayryeng

関連する問題