• ベストアンサー

MATLABで画像軸のスケール変更をしたいのですが、 スケールだけのへ

MATLABで画像軸のスケール変更をしたいのですが、 スケールだけのへんこうはできますか? axis ([xmin xmax ymin ymax])だと画像サイズを超えた際に余白が白くなってしまいます。 画像サイズはそのままで縮尺サイズだけ変更したいです。 どなたかお願いします

質問者が選んだベストアンサー

  • ベストアンサー
  • Kules
  • ベストアンサー率47% (292/619)
回答No.2

再びKulesです。 >500*300のimageデータを axis(0 800 0 300)のサイズに白い部分をなくして画像を表示する あまりimageで軸を考慮することはないと思いますが、これをしたいということは 他のimageデータやlineなんかを同時に1つの図に描いたりするんですかね? 500*300の行列Fを用いて image(F)とすると、自動的にy軸がひっくり返り、縦軸、横軸はそれぞれ0~300と0~500に 調整されますが、これはimageという関数内で勝手にしていることなので、 これが嫌なら最初からimage(X,Y,F)とすれば、X軸、Y軸を任意に設定することができます。 X,Yはベクトルである必要があり、2要素あれば十分なようです。 (例えばXなら1つ目の要素が左端のピクセルの真ん中、2つ目の要素が右端のピクセルの真ん中を表す。 imageが反転するような設定も可能だけどすると混乱するかも) は列数(今回だと500)Yは行数(今回だと300)に 一致している必要があります(確か) 従って、最初からimage([0,800],[0,300],F)とすれば横軸は0~800にすることができます。 ここまで書いてて気づきましたが、500*300のFをimageで描くと縦軸が0~500、横軸が0~300に なるんですね。 こういうことでよいでしょうか?答えになっているか不安ですが… 参考になれば幸いです。

aroha_2010
質問者

お礼

連絡が遅くなってしまい申し訳ないです。 無事に解決することができました。 何度もありがとうございました

その他の回答 (1)

  • Kules
  • ベストアンサー率47% (292/619)
回答No.1

ちょっといまいち状況がつかめないのですが、 imageとかpcolorとかsurfとかで画像データが貼り付けられていて、 axis ([xmin xmax ymin ymax])をすると周りに余白が出来るということでしょうか? (例えば500×300のimageデータを貼り付けていて、axis ([0 800 0 300])ってすると 右端に白い部分が出来てしまうとか) もし上のようなことで画像の縮尺だけを変えたいということでしたら、 set(gca,'Position',[左端 下端 幅 高さ])で変更できます。 ただし、デフォルトの設定ではgcaのPositionの単位はNormalizedなので、 現在のfigureのサイズで正規化されています。 (例えば左端を0.5とすると、axesの左端はfigureの真ん中に来ます。) それを考慮した値を与えてやればよいです。 あるいは、set(gcf,'Position',[左端 下端 幅 高さ])として、figureの サイズ自体をいじるのも手だと思います(上にも書いた様にPositionの単位はNormalizedなので figureのサイズをいじるとそれに対応してaxesのサイズも変わります) この場合、figureのPositionの単位はデフォルトだとpixelsなので、 ピクセル単位で指定してやる必要があります。 長文失礼しました。的外れな回答ならその旨補足欄にお願いします。 参考になれば幸いです。

aroha_2010
質問者

補足

回答ありがとうございます。 質問内容が分かりにくくてすいません。   >(例えば500×300のimageデータを貼り付けていて、axis ([0 800 0 300])ってすると 右端に白い部分が出来てしまうとか) ↑この状態です。 500*300のimageデータを axis(0 800 0 300)のサイズに白い部分をなくして画像を表示することは可能でしょうか?   よろしくお願いします。

関連するQ&A