- ベストアンサー
MATLABのプログラミングについての質問
- MATLABのプログラミングについて質問です。Windowsのペイントでドラッグ&ドロップすると枠ができる方法や、MATLAB-GUIで画像データを表示する方法、モニター中央に画面を表示する方法、画面の切り替え方法について教えてください。
- MATLAB初心者が質問です。Windowsのペイントでドラッグ&ドロップして枠を作る方法、MATLAB-GUIに画像データを表示する方法、モニター中央に画面を表示する方法、画面の切り替え方法について教えてください。
- MATLAB初心者の質問です。Windowsのペイントでドラッグ&ドロップすると枠が作成される方法、MATLAB-GUIに画像データを表示する方法、画面の表示位置をモニター中央にする方法、画面の切り替え方法について教えてください。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
だいぶ日にちが経っているので解決したor手遅れかも知れませんが。 わかるところだけで勘弁して下さい。 MATLAB-GUIとはMatlab figureなどのことと思っていいのでしょうか? そうでなかったらその時点で私にはお手上げですね… (2) tifに限らず、大体の画像データはimreadで取り込めます。 出力変数が可変なのでいろいろありますが、大体は 画像データ(縦×横)とカラーマップデータ(64×1のベクトルだったかな?) あるいは 画像データ(縦×横×3(RGBそれぞれのデータが層になっている)) だったと思います。 ただimreadはいろいろオプションで設定しないといけないみたいで、 私自身ちゃんとは使えていません…pngとjpgとbmpぐらいしか表示させたことないです。 画像を表示させるには基本的にはimageでいけます。 (3) これは「どのようなモニターで見ても」ということでしょうか? Ssize=get(0,'screensize'); でSsizeにはモニターのサイズ(1×4 double)が入ります。 [左端の位置、下端の位置、幅、高さ]です。ただget(0)で得られるサイズなので、特に何もいじっていなければ(get(0,'Unit')=='pixel'であれば) 最初の2つの成分は1になるはずです。 例えばSsize=[1,1,1024,768]であればそのモニターのサイズは 1024ピクセル×768ピクセルということです。 ということはモニターの中央はSsize(3)/2,Ssize(4)/2で得ることができます。 次にMatlab-GUIですが、位置や大きさを決めるプロパティは'Position'です。 figureならget(gcf)で見ることができます。 このpositionというプロパティもSsizeと同じ形で格納されています。 >MATLAB-GUIを表示した時に、表示位置を常にパソコンのモニター中央にする方法 ということですので、figureの中心位置とモニターの中心位置を一致するように positionプロパティをいじればいいです。 と文章で書いても自分でもよくわからないことになったので簡単にスクリプトを書いてみます。 figure; Fsize=get(gcf,'Position'); Ssize=get(0,'ScreenSize'); set(gcf,'Position',[Ssize([3 4])/2-Fsize([3 4])/2,Fsize([3 4])); これでどんなモニター上でもfigureは画面の中央に来ると思います。 これに限らず、MATLABでいじれるさまざまはハンドルを取得し、get(ハンドル)とすることで どのようなプロパティが設定されているのか見ることができます。 (4) とりあえずボタンを作って、そのボタンを押した時に走る関数を書き込んでやればいいです。 Aの画像を表す行列をA,Bの画像を現す行列をBとします。 figure; h_i=image(A); h_ui=uicontrol; set(h_ui,'type','button');%すでにボタンになっていたら不要 set(h_ui,'callback','set(h_i,''Cdata'',B);'); h_uiのcallbackプロパティに先ほど描いた figureのCdataプロパティをBに変更するというコードが 動くようにしました。 これで所望のことはできると思うのですが… 「こういうことがしたいんじゃないんだ」などありましたら補足に願います。 長文失礼しました。参考になれば幸いです。
お礼
Kules様、ご回答ありがとうございました! >MATLAB-GUIとはMatlab figureなどのことと思っていいのでしょうか? はい。Kules様のおっしゃる通りです。 (2)(4)については、既に解決しました。 (2)はご回答の通り、imread で解決しました。 (4)は figure1, figure2 とあった場合、ボタンを押したときの関数に figure2 delete(figure1) で、画面遷移ができました。 (3)についてはスクリプトも記載して頂き、大変参考になりました。 ありがとうございました! ちなみに、、先ほど別のご質問も投稿しましたので・・・ お時間がある時にでも拝見して頂けたら幸いです。 http://oshiete1.goo.ne.jp/qa5739475.html