アットウィキロゴ

質問ページ

新しく質問掲示板を設置しました!こちらへどうぞ


Matlabに関する質問のページです。回答をしてくれる人もここへお願いします。
たいした質問でなくても気軽に書き込んでください。
既にあるTIPSに対するコメントも歓迎します(間違っている、もっと良い方法がある等)
解決策が出た場合、そのうち手動でTipsに追加されます。(誰か自動化の仕方を教えてください)
誰かが答えてくれるまで気長に待ちましょう。

過去の質問を見るにはページの下の方にある、
[すべてのコメントを見る]というリンクをクリックして下さい。

  • いかわさん
    sscanf('"2008-09-23 02:30:00.1"', '\"%d-%d-%d %d:%d:%d\"')
    でいかがでしょう
    ダブルクォーテーションは\でエスケープしてやると読み込めそうです -- (まーぼ) 2008-11-06 17:49:59
  • もっと単純なこんな方法でも読み込めます
    a = '"2008-09-23 02:30:00.1"';
    a = a(2:end-1);
    sscanf(a, '%d-%d-%d %d:%d:%d');

    最後の00.1という文字列を%dで読み込もうと
    しているのがちょっと不安ですが、
    %fでなくても大丈夫なのでしょうか?
    -- (まーぼ) 2008-11-06 18:10:24
  • XY平面上で格子状に配置された各点にZの値を与えたものを3次元で表現したいのですが、何か良い方法はありますでしょうか?
    meshで試してみたのですが、今後欠落する点も出てくるのでplot3で試したところ3×3の9点では上手くいったのですが、4×4の16点では「入力因数が多過ぎます」とエラーが出てしまいました。
    このような説明で伝わるか心許ないですが、ご助言を頂けると幸いです。 -- (DO) 2008-11-25 18:38:43
  • スイマセン、解決しました。単に自分の知識が足りないだけでした。。長々と申し訳ありませんでしたっ。 -- (DO) 2008-12-06 20:41:53
  • 初歩の質問で申し訳ないです。
    例えば、黄色い背景に赤い四角の物体の画像があるとして、
    その赤い四角の物体の色を黒にする、というようなプログラムを組むにはどうしたらよいでしょうか。
    教えてください。 -- (初心者) 2008-12-09 17:23:05
  • 2つの画像(BMP)を読み込んで、一定時間交互に表示し続けさせるにはどのようにすればいいでしょうか?
    また、二つの画像の提示間隔(例えば、a.bmpが表示されてから何秒後にb.bmpを表示するか)とアニメーションの提示時間(交互に何秒間表示し続けさせるのか)を指定するにはどのようにすればいいでしょうか?
    ご協力お願いいたします。 -- (東方全敗) 2008-12-15 17:44:22
  • > 初心者さん
    MATLABで画像を作る、もしくはimread等で読み込んだ
    際には画像データは3次元配列で表現されます。
    例えば100x100ピクセルの画像は100x100x3のサイズの
    配列になり、3つの平面にはそれぞれRed, Green, Blueの
    値が0〜1の値として格納されます。
    黄色を残したままで赤→黒にするのであれば、
    (R, G, B) = (1, 0, 0)のピクセルを探して
    (0, 0, 0)にすれば良いかと思います。

    例:
    I = imread('test.jpg'); % 画像を読み込む
    I( I(:,:,1)==1 & I(:,:,2)==0 & I(:,:,3)==0 ) = 0;
    -- (まーぼん) 2008-12-30 19:07:49
  • > 東方全敗さん
    MATLABにはいくつか時刻取得方法が用意されていますが
    精度にそれほどこだわらないのであればtic, tocを利用する
    のが手っ取り早くてオススメです※。手軽にアニメーション
    を行うには、画像をfigureに描き、drawnow()関数で
    フラッシュを行い、指定時間だけ待ち、次の画像を表示という
    方法で一応実現できます。

    例:10秒の間0.5秒間隔でアニメーション
    a = imread('a.bmp');
    b = imread('b.bmp');
    cont = 0; %フレームカウンター
    figure;

    tic;
    while(toc<10) %10秒の間アニメーション
    if toc > cont*0.5 %0.5秒間隔でフレームを更新
    if mod(cont, 2) %カウンターが偶数の時はaの画像を表示
    image(a);
    else %奇数の場合はbの画像を表示
    image(b);
    end
    drawnow() %確実に描画させる
    cont = cont+1;
    end
    pause(0.05); %CPU使用率が上がるのが嫌な場合はpauseを入れる。(フレーム更新の精度はその分落ちる)
    end

    ※画像の更新にmSecの時間精度を必要とする場合はMATLAB
    の関数では実現出来ないのでネットで誰かが作った外部関数
    を探しましょう。Windowsのマルチメディアタイマー等を
    MATLABから利用できるものがあるはずです。例えば心理
    実験でよく用いられるPsychophysics toolboxのGetSecs()
    関数はmSecオーダーの精度を持っています。

    -- (東方腐敗) 2008-12-30 19:42:25
  • 初心者ですみません。
    n次元マトリクスがあって、すべての要素の
    和やすべての要素の中の最大値,最小値などを知りたいときには、
    どのような関数を使えばいいのでしょうか?

    以前、みたことがあるような気がするのですが、ヘルプ
    の中から探せませんでした。

    よろしくお願いいたします。 -- (年の瀬) 2008-12-30 21:52:35
  • >年の瀬さん
    sum()やmax()で普通にいけます

    例:
    A = rand(3,3,3,3)%4次元マトリックス
    % 和
    sum(A(:)) %A(:)とすると全要素が一次元ベクトルになって出力される
    % 最大
    max(A(:))
    % 最小
    min(A(:))
    -- (まーぼ) 2009-01-07 14:36:10
名前:
コメント:

すべてのコメントを見る
最終更新:2009年01月13日 17:25