重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

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

A 回答 (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に
なるんですね。
こういうことでよいでしょうか?答えになっているか不安ですが…
参考になれば幸いです。
    • good
    • 0
この回答へのお礼

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

お礼日時:2010/08/18 12:12

ちょっといまいち状況がつかめないのですが、


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なので、
ピクセル単位で指定してやる必要があります。

長文失礼しました。的外れな回答ならその旨補足欄にお願いします。
参考になれば幸いです。

この回答への補足

回答ありがとうございます。
質問内容が分かりにくくてすいません。
 
>(例えば500×300のimageデータを貼り付けていて、axis ([0 800 0 300])ってすると
右端に白い部分が出来てしまうとか)

↑この状態です。
500*300のimageデータを
axis(0 800 0 300)のサイズに白い部分をなくして画像を表示することは可能でしょうか?
 
よろしくお願いします。

補足日時:2010/07/22 12:06
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

今、見られている記事はコレ!