1. ホーム
  2. matlab

[解決済み】Matlab: 黒を使わないグレースケールでのimagescの使用

2022-02-21 20:24:48

質問

例として0か1の単純な2次元行列mから始める。

m = [ 0 0 0 1 1
      0 1 1 1 0
      1 1 0 0 1
      0 0 0 1 0 ] 

この画像を、imagesc()を使って白とグレー一色で図に表示させるにはどうしたらいいでしょうか?現在、私のコードは次のようなものです。

imagesc(m)
colormap(gray)
colorbar

CLimでカラーマップを調整したり、どの値を使うか制限を設ける方法をいろいろと実験してみましたが、実際の色自体を制限して、0と1の値に対して白と黒があるのではなく、1と0に対してそれぞれ白と(薄い)灰色の値があるようにする方法は見つかっていません。これを行うための迅速かつ容易な方法があれば教えてください。

注:黒を使うことで、同じ次元(しかし異なる値)の等高線プロットを重ねられるようにしたいので、それが回答に関係するかどうかは分かりませんが、その点を考慮した提案も歓迎します。

どのように解決するのですか?

imagesc(m)
cmap = [.7 .7 .7 %// light gray
        1  1  1] %// white
colormap(cmap)
colorbar('Ytick',[.25 .75],'Yticklabel',[0 1]) %// only two values in colorbar

<イグ