• 締切済み

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」を出力する事って可能なのでしょうか?  色々と試してみましたが、今の自分の力量では無理でした。もし可能であれば、やり方を教えて頂きたいです。 全てでなくても、判る範囲までのご回答でもかまいません。 よろしくお願いします。

みんなの回答

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

三度Kulesです。 (1)これ意外とめんどくさいですね…もっといい方法があると思うのですが私には これぐらいしか思いつきませんでした。 FolderName=pwd;%カレントディレクトリを指定、自分で指定したければuigetdirを使用 List=dir(FolderName);%カレントディレクトリ内のファイルのリストを取得 NumofJpeg=0; for k=1:length(List); if ~isempty(strfind(lower(List(k).name)'.jpg'));%リスト内のファイル名に.jpgがあるか検索 NumofJpeg=NumofJpeg+1; end; end; if文にlowerを付けているのはたまに「.JPG」があるからですね…ファイル名の途中に「.jpg」がついてる別のファイルなどのことは考えていません。そこまでしようとするとif文のところを FileName=List(k).name; if ~isempty((strfind('.jpg',lower(FileName(end-3:end)))); にすればできるような…そこまで試してないのでわかりませんが。 (2)私も気になってちょっと調べてみましたが、どうやらなさそうです。 (3)論理和ということはそれぞれの画像は0か1の値ということでしょうか? 画像の読み込み、書き出しの部分はいいですよね? A.tif、B.tifのデータをそれぞれA,Bとして、 C=A+B; C(C>1)=1; でいいと思います。 以上、参考になれば幸いです。

関連するQ&A

  • 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を表示する方法 長くて申し訳ございませんが、ご回答よろしくお願いします。

  • MATLABについてお聞きしたいです。

    MATLABについてお聞きしたいです。 現在勉強しているのですが、プログラミング初心者なので…。 MATLABでwavファイルの書き込みについてです。 周波数1000Hz, 0.5秒,サンプリング周波数22050Hz の設定にしてwavファイルで保存したく… f=1000; > A=0.5; > Fs=22050; > wavwrite(MyFunc_2(1000,0.5,22050),'sin1000'); という設定にして、保存したのですが、録音時に流れた音と録音された音が違うのです。 ファンクションMファイルは… function y=MyFunc_2(f,A,Fs) %Fs=44100; d=1/Fs; t=0:d:2; %f=440; %A=0.1; y=A*sin(2*pi*f*t); wavplay(y,Fs) このような設定にしています。 問題解決への協力よろしくお願いします。

  • MATLABのデータ抽出についておたずねしたいことがあります。

    MATLABのデータ抽出についておたずねしたいことがあります。 MATLAB初心者ですが、以下のようなプログラムを現在書いています。 f = input('file name? ---> ','s'); m = csvread(f,66,2,[66,2,1089,3]); time=(0:0.002:2.046); t=reshape(time,1024,1); current=m(:,1)*1000; voltage=m(:,2)*10; m2=[t current voltage]; a=m2(1,2); b=m2(2:40,2); if a>max(b); g=a; end for I=2:1024; for J=1:1024; for K=39+I; if K>1024; K=1024; end c=m2(I,2); d=m2(J:I-1,2); e=m2(I+1:K,2); if c>max(e)&&c>max(d); g=c; else end end end end plotyy(t,current,t,voltage) ylim([0,700]) ifの条件を満たしたときに、m2の2列目の値だけでなく条件を満たしたその行の3列全てのデータを抽出し、条件を満たした行だけの新たな行列を作りたいのですが、どのような命令を書けばよいでしょうか。 お手数をおかけしますが、ご教授よろしくお願いいたします。

  • MATLABのコンパイルについて

    MATLABのR14SP3を使っているのですが、 コンパイルをしようとするとエラーが発生します。 どうやら使っているmexファイルが旧式のために使えないようです。 書き換えはどのようにしたら良いでしょうか? 以下がエラー文です よろしくお願いします *************************************************************************** Warning: The file extension of 32-bit Windows MEX-files was changed from ".dll" to ".mexw32" in MATLAB 7.1 (R14SP3). The generated MEX-file will not be found by MATLAB versions prior to 7.1. Use the -output option with the ".dll" file extension to generate a MEX-file that can be called in previous versions. For more information see: MATLAB 7.1 Release Notes, New File Extension for MEX-Files on Windows ***************************************************************************

  • mファイルを開こうとしてもMatlabのエディタが起動しない.

    こんばんわ. 新しくインストールしたMatlabR2007aに関する質問です. 今まで使っていたパソコンでは,デフォルト設定でmファイルをダブルクリックするとmatlabが起動された後,エディターが自動で開いていました. しかし,新しくインストールしたパソコンではmファイルが最初から関連付けされておらず,Matlabを常に使用するプログラムとして指定しました. その結果,Matlabが起動するところまではいくのですが,自動ではエディタが起動しないという状態になっています. 今までのようにm-ファイルをダブルクリックすればMatlabとリンクの取れた状態のエディタが起動するように設定しなおしたいのですが,ご存知の方はいらっしゃるでしょうか? 教えてください.

  • matlabのパス設定のエラー

    matlabR2007a student var.を vista 64bitで使っています。 パス設定のエラーで困っています。 matlabを立ち上げると エラー: File: pathdef.m Line: 17 Column: 3 予期せぬ MATLAB 演算子です。 警告: MATLAB did not appear to successfully set the search path. To avoid this warning the next time you start MATLAB, use http://www.mathworks.com/access/helpdesk/help/techdoc/ref/pathdef.shtml to help troubleshoot the "pathdef.m" file. To recover for this session of MATLAB, type "restoredefaultpath;matlabrc". と表示されていまします。"restoredefaultpath;matlabrc"と 入力しても再度立ち上げると再び同じ画面がでてしまいます。 またファイルのパス設定をクリックしても ??? 'pathtool' は未定義の関数、または変数です とエラーになってしまいます。 どなたか解決法をご存知ないでしょうか?

  • MATLABのwavreadについて

    現在、MATLABのソースを見ているのですが。 [y,Fs,bits] = wavread('filename',[N1 N2]) の一文はどういう動作を行っているのでしょうか? マニュアル等をみて以下のことを見つけたのですが、どうにも理解できません。 ・[y,Fs,bits] = wavread('filename') は、Hertz 単位でサンプルレート(Fs)を戻し、ファイルの中のデータを符号化するために使用するサンプルあたりのビット数(bits) も戻します。 ・[...] = wavread('filename',N) は、ファイル内の各チャンネルから最初の N個のサンプルのみを出力します。 どなたかわかりやすく教えていただけないでしょうか、よろしくお願いいたします。

  • MATLABにおける行の挿入方法

    こんにちは,現在データ整理のためにMATLABを用いて以下のようなプログラムを構築しています 1.ファイルを読み,その値を100行7列の行列Aとする 2.Aの10行目と11行目の間に1行7列の行列B1を挿入する (イメージ的にはEXCELの行の挿入です) 3.同様に20行目と21行目の間に1行7列の行列B2を挿入する 4.以降10行ごとに繰り返す となります.ここで2の処理にあたる「行列の特定の列の間に別の行列を挿入する」方法がわかりません いろいろ調べたのですが、このような方法はどこにもありませんでした MATLABに詳しい方,教えていただけないでしょうか?

  • jpgをtifにサイズを押さえながら変換したい

    jpgをtifになるべくサイズを押さえながら変換したいのですが、できません。 困っています。 jpgのサイズは、約1-1.5MB、(幅2560ピクセル、高さ1920ピクセル、水平方向解像度72dpi、垂直方向解像度72dpi)です。これを、600dpiのtifにしたいと考えています。どうしても、20-30MBになってしまいます。 これまで試した方法は以下の通りです。 1、無料ソフトVixでサイズダウン 2、illustratorで開いて、tifにして保存 最悪白黒でもいいのですが、それでも10MB以上になってしまいます。 5MB以下にできれば最高です。 どうしたらいいでしょうか…。 ご存じの方、お教え頂けるとありがたいです。

  • ファイル名が記入されたファイルを読み込んでcdする

    ファイル名が記入されたファイルを読み込んでカレントディレクトリを変更するにはどうしたら良いでしょうか?   具体的に申し上げると、    カレントディレクトリに filepass.txt というファイルが存在し、 中身には、例えば、 C:\Software と書かれています。   MATLABで、 filepass.txtを読み込み、 中に書かれている、 ディレクトリ名に、   カレントディレクトリを変更する(cd) にはどうしたらよいでしょうか?