MATLABのプログラミングについての質問

このQ&Aのポイント
  • MATLABのプログラミングについて質問です。Windowsのペイントでドラッグ&ドロップすると枠ができる方法や、MATLAB-GUIで画像データを表示する方法、モニター中央に画面を表示する方法、画面の切り替え方法について教えてください。
  • MATLAB初心者が質問です。Windowsのペイントでドラッグ&ドロップして枠を作る方法、MATLAB-GUIに画像データを表示する方法、モニター中央に画面を表示する方法、画面の切り替え方法について教えてください。
  • MATLAB初心者の質問です。Windowsのペイントでドラッグ&ドロップすると枠が作成される方法、MATLAB-GUIに画像データを表示する方法、画面の表示位置をモニター中央にする方法、画面の切り替え方法について教えてください。
回答を見る
  • ベストアンサー

MATLABのプログラミングについてご質問です

MATLAB初心者です。 現在、以下の環境を使っています。 ------------------------------- OS:Windows XP MATLABのバージョン:R2007a ------------------------------- 以下の内容をプログラムでどう組み込めばよいのか分らないため、質問させて頂きました。 詳しい方、ご教授のほどお願いします。 (1)Windowsのペイントで、ドラッグ&ドロップすると    +----------+    |         |    +----------+  このように、点線で枠ができると思います。それをMATLABで表現する方法  (始点座標と終点座標はマウスで操作するため、座標は可変になります) (2)MATLAB-GUIに画像データ(sample.tif)を表示する方法 (3)MATLAB-GUIを表示した時に、表示位置を常にパソコンのモニター中央にする方法 (4)MATLAB-GUIで画面A, Bとある場合、画面Aの[次へ]ボタンを押すと画面Aを消して画面Bを表示する方法 長くて申し訳ございませんが、ご回答よろしくお願いします。

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

  • ベストアンサー
  • Kules
  • ベストアンサー率47% (292/619)
回答No.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に変更するというコードが 動くようにしました。 これで所望のことはできると思うのですが… 「こういうことがしたいんじゃないんだ」などありましたら補足に願います。 長文失礼しました。参考になれば幸いです。

forza1204
質問者

お礼

Kules様、ご回答ありがとうございました! >MATLAB-GUIとはMatlab figureなどのことと思っていいのでしょうか? はい。Kules様のおっしゃる通りです。 (2)(4)については、既に解決しました。 (2)はご回答の通り、imread で解決しました。 (4)は figure1, figure2 とあった場合、ボタンを押したときの関数に figure2 delete(figure1) で、画面遷移ができました。 (3)についてはスクリプトも記載して頂き、大変参考になりました。 ありがとうございました! ちなみに、、先ほど別のご質問も投稿しましたので・・・ お時間がある時にでも拝見して頂けたら幸いです。 http://oshiete1.goo.ne.jp/qa5739475.html

関連するQ&A

  • MATLABのプログラミングについてご質問です(2)

    MATLAB初心者です。 現在、以下の環境を使っています。 ------------------------------- OS:Windows XP MATLABのバージョン:R2007a ------------------------------- 以下の内容をプログラムでどう組み込めばよいのか分らないため、質問させて頂きました。 詳しい方、ご教授のほどお願いします。 (1)例えば「512x512」サイズの画像を figure に表示させ、その画像の中点を表示させる方法  (画像の中点に「×」マークをつけるイメージです) (2)上記の画像からマウスを使って、座標の始点と終点をクリックしたら"□"(選択範囲)の枠が表示される方法  (マウスを使って画像サイズを小さくしたいのが目的です) (3)上記の画像からマウスを使って、クリックした場所の座標(x軸、y軸)を figure に表示させる方法   (4)uigetdir からディレクトリ選択画面を表示して、指定したディレクトリの絶対パスを取得する方法 (5)画像データを imwrite する時、指定したパス(ディレクトリ)に出力する方法 全てでなくても、判る範囲までのご回答でもかまいません。 よろしくお願いします。

  • MATLABのプログラミングについてご質問です(3)

    MATLAB初心者です。 いつもお世話になります。 現在、以下の環境を使っています。 ------------------------------- OS:Windows XP MATLABのバージョン:R2007a ------------------------------- 以下の内容をプログラムでどう組み込めばよいのか分らないため、質問させて頂きました。 詳しい方、ご教授のほどお願いします。 (1)カレントディレクトリ内のフォルダ(hoge)の中に「JPEGファイル」が何個あるかをカウントする方法 (2)MATLABの guide のプロパティ インスペクターの中に文字の水平位置(left, center, right)を設定する  「HorizontalAlignment」があると思います。  垂直位置を設定する箇所ってどこかにあるのでしょうか?  あれば、教えて頂きたいです。 (3)2つの画像ファイル「A.tif」「B.tif」を合成(論理和)して「C.tif」を出力する事って可能なのでしょうか?  色々と試してみましたが、今の自分の力量では無理でした。もし可能であれば、やり方を教えて頂きたいです。 全てでなくても、判る範囲までのご回答でもかまいません。 よろしくお願いします。

  • MATLABプログラミングについて

    卒業研究のデータ解析をMATLABで行っているのですが, 途中で行き詰ったためお助けをお願いします. 質問内容は,実験により得られたデータがほぼsin波なのですが,その波の数をプログラムで読み取るためにはどうすればよろしいのでしょうか?実験データなので細かく見ると上下に振れています. データをプロットしたグラフだと間隔の狭いところは読みにくく困っています.また,始点と終点の読み取り方法もわかりません. どのようなプログラムを組めばいいか教えてください. 質問がわかりにくいと思いますがよろしくお願いします.

  • MATLABのプログラミングについて

    マウスのカーソルの移動距離を計測したいのですが、 MATLABでできますでしょうか。 プログラムでどう組み込めばよいのか分らないため質問させて頂きました。 MATLAB初心者のため、詳しい方ご教授のほどお願いします。 左クリック(開始)→マウスを動かす→左クリック(終了) のようにクリックからクリックまでの移動距離を計測したいのです。 できれば、マウスカーソルの軌跡も表示させたいです...。 丸投げで聞いてしまい申し訳ないのですが、 緊急で必要になったため、質問させていただきました。 以下の環境を使っています。  -Windows 7  -R2010b

  • vb6 指定距離の座標の求め方について

    ご存知の方ご教示願います。 2点の座標からなる線【始点A(X1=10,Y1=10)、終点B(X2=50,Y2=40)】があるとします。 始点Aから終点Bに10進めた時の座標、点C(X3,Y3)を求めたいのですが 計算式がわかりません。宜しくお願いします。 ※点Cの座標は線上とします。

  • matlabのプログラミング

    MATLABのプログラミングについてご質問ですが、 構造体配列を使った、二つの多項式を足すプログラムの作り方をご存じの方いらっしゃいますか? (コマンドのpolyaddを構造体配列で作ったプログラム) 例、 a=struct('exponent',{1,2,3},'coeff',{0,1,0}) b=struct('exponent',{1,2,3},'coeff',{1,0,1,}) でプログラム(a,b)を発動すると answer= 1x3 struct array with fields: exponent coeff となり、workspaceにある答えが昇順表示になるプログラムです。 よろしくお願いします。

  • matlabのプログラミング

    MATLABのプログラミングについてご質問ですが、 構造体配列を使った、二つの多項式を足すプログラムの作り方をご存じの方いらっしゃいますか? (コマンドのpolyaddを構造体配列で作ったプログラム) 例、 a=struct('exponent',{1,2,3},'coeff',{0,1,0}) b=struct('exponent',{1,2,3},'coeff',{1,0,1,}) でプログラム(a,b)を発動すると answer= 1x3 struct array with fields: exponent coeff となり、workspaceにある答えが昇順表示になるプログラムです。 よろしくお願いします。

  • MATLABプログラミングをCのプログラミングに変換

    MATLABでよくやる以下のプログラミング方法を効率よくCでプログラムするにはどうすべきですか? a=[]; for i = 1:100 a_k = [1 2 3 4];<<-a_kは1行4列の行列です a = [a a_k];<<-特にこの部分 end よろしくお願いします。

  • matlab初心者の質問

    matlabに関する質問です。(私は初心者です。) 例えば A=[1 2 3 … n] のような行列があった場合、 B=[1 1+2 1+2+3 … sum(A(1:n))] のような行列を表示するにはどのようなコードを書けばいいのでしょうか。

  • 始点、終点の二つの座標と半径からの円弧の長さの求め方。

    始点、終点の二つの座標と半径からの円弧の長さの求め方。 こんにちは。数学ずぶの素人です。 座標上に円弧があります。始点、終点の二つの座標と半径が分かっており、これらから円弧の長さを求めたいのですが計算方法が分かりません。 どなたか分かる方、ご教授ください。

専門家に質問してみよう