• 締切済み

MATLABの疑問

MATLAB初心者です。 今MATLABを使い勉強をしています。 先生からもらったデータでそこに数値を入れて行っているのですが 開始時間を変更するとなぜ、結果のグラフが違うんでしょうか。 例えば、0開始と0.01開始のグラフがすごい違います。 (終了時間は同じ) 例だと、0.01秒信号が出る時間が遅くなっただけで 何も結果には変化ないと思うのですが そこのところどうなのでしょうか・・・ 皆さん回答お願いします。

みんなの回答

回答No.2

先生が作ったデータというところが分からないですが・・・ データ=mファイルというように思うとNo1様が書かれているように力学系の問題だと思われます。 たとえば dy/dx =Ay というシンプルな方程式を用意したときに解は y= Const. ×exp(At) となることはよく知られています。ここで次のように2つの初期条件を用意しましょう。 (x , y)=(0 , 0.01), (0 , -0.01) そうすると解はそれぞれ y= 0.01 ×exp(At)    y=- 0.01 ×exp(At) となります。グラフを実際に書いてもらうとわかりますが、右肩上がりと右肩下がりのグラフです。 No1さまが書き込まれたカオスの初期条件依存性というのはこれのこと(これはカオスではないですが)です。 これに類似したものがおそらく質問者様の持っている問題の中に組み込まれているのでしょう。

  • my3027
  • ベストアンサー率33% (495/1499)
回答No.1

何のグラフを出力しているかわからないので、回答しようがありません。Matlabのバグを疑っているのであれば、メーカーに問い合わせた方がいいと思います。 もしカオスの場合、初期値の微笑変動で結果が大きく違うので、それが先生の狙いかもしれません。

関連するQ&A

  • MATLABのプログラミング

    MATLAB全くの初心者です。 横軸を時間、縦軸を反応値は0または1に固定したもので、 周期性をもったパルス波形を生成したいのですが、 途中でつまずいてしまいました。 グラフをプロットすると、 ____∧__∧___ このようなグラフになってしまいます。 本当は、 __|____|____ このようなグラフをつくりたいと考えているのですが… 関数zerosを使った記述方法があれば教えていただきたいです。 よろしくお願いいたします。

  • MATLABによるアニメーション

    現在、数値流体解析を行っており、その結果を3次元のアニメーションをしたいと考えています。アニメーションさせる方法としてMATLABを考えいるのですがなかなか思うように行きません。そこで、以下の質問があります。 (1):アニメーションの為の3次元のデータファイルはどのような配列で   ファイルに格納しなければならないのか。 (2):データファイルには、ある時間ステップごとのデータがあるのですが   このデータをどのようにMATLABに読み込ませれば良いのか((1)にも関係が  あるかも) (3):アニメーションの為の必要な関数、定義は何か 以上の3つなのですが、もしMATLABによるアニメーションの良い例などがどこかのホームページなどにあれば教えていただけるとありがたいです。 分かりにくい文章で申し訳ありませんがよろしくお願いします。

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

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

  • matlabでの長時間の計算について

    すみません、現在matlabで数値解析を行っております。 質問を以下にまとめたので、よろしければアドバイスをお願いします。 -------------------------------------------------------------- matlabで数十分かかると考えられる計算を行おうとしています。 その場合、計算後の大容量のデータは一般的にどのように保存すべきでしょうか? これまで、パラメータを50個用意してそれぞれ計算を行い、 後に見比べるために、目的の変数の値をプロットし、画像(角度などを指定してjpegに)として保存していました。 (for文を使って一定量パラメータを変化させる毎に、saveasを使ってグラフを保存していた。) 今まではパラメータ1つあたり数十秒程度で済む計算だったのでこれでも良かったのですが、 今後はパラメータ1個あたりに対しかかる計算時間が数十分になります。。 そこで、今までと同じように保存していくやり方では、もしグラフの保存方法(角度など)を間違えてしまった場合に かなりの損失になってしまうと思ったので質問しました。。 何か効果的なデータの保存の仕方はありませんでしょうか? 以後もパラメータをfor文を使って一定量変化させ、50個用意して計算していこうと思うのですが・・ 一応現状で考えているのは、saveを使ってworkspace内の変数(全て)をそれぞれ保存していくというものです。 何かその他に効果的なデータの保存方法などありましたら是非教えてください。 -------------------------------------------------------------- 上記のように、 計算時間のかかる計算をmatlabを使って行おうと考えているのですが、 計算機を走らせている間、動作が著しく重くなり、ほとんど他の作業が出来なくなります。 (これは避けられませんよね・・?) 私はmatlabを学校で使っているので、帰宅する際、計算機を走らせて帰ろうと考えています。 (節電家でなくてすみません。。) 問題は途中でメモリ不足などで計算がストップしてしまわないかということです・・ 一応、パラメータを変える毎に初期化すべき変数はzerosを使って初期化しているのですが、 パラメータ毎の目的の変数(6つ)は、多いとそれぞれ10^6×200ほどの配列となる可能性があります。 せっかく手間暇かけて走らせたのに、途中でメモリ不足などと表示されたら辛いなぁと思い・・ 現在使っている計算機はubuntu11.04で、メモリは992.8MiBなのですが、やはりこの計算機だと際どいでしょうか・・? -------------------------------------------------------------- コードに関する質問なのですが・・ uが50000000*200の配列で、それぞれの要素に値が入っているとします。 これをそのまま1行目~50000000行目まで、順にグラフにプロットすると、かなりの時間がかかるので、 1行目から、一定数(例えば100)毎の行の配列を グラフにプロットさせたいのですが、やり方がわかりません・・ x = -10: 10: 200 ; t = 0: 100: 50000000 ; waterfall(x,t,u) ; とするとエラーが出ます。 どなたか訂正出来る方、お願いします。。 waterfall以外でも全然構いません。 -------------------------------------------------------------- 以上長々と質問すみませんでした。。 どなたかご指導頂けると助かります・・ あと、分類というのがよくわからなかったので、その他となっています・・ ごめんなさい。。

  • データをリアルタイムのようにグラフ化

    MATLABで作成した.matファイルもしくはExcelファイルなどに格納した あるデータ配列の数値をグラフ化するときに 時間によって変化するのが目に見えるようにするにはどうすればいいでしょうか? 例えば 100行2列のデータを2次元折れ線グラフとして表示するときに プログラムを実行すると1秒ごとに1行分のデータがプロットされ 時間ごとにグラフが推移していくようにしたいです。 また、そのような変数をいちいち与えず ファイルを読み込むだけにしたいのですが どのようなファイル形式ならばできるのでしょうか?

  • 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初心者です。 Aの画像とその他の画像を比べる評価実験を行う予定です。 Aの画像を細かく定義 Bの画像を細かく定義 Aの画像を表示させる 5秒たったら、画像をリセットして Bの画像を表示 画像をリセットして終了 というところまでは不格好ながらにもかけました。 これを、 A、B、C、Dの画像を細かく定義 Aの画像5秒間表示後、 リセット(真っ黒の状態に)して ランダムに(B、C、D、E)いずれかの画像を表示させる リセットして終了 という形に変えたいのですが、うまく行きません。 CDEの画像を定義した後、どのようにすればいいのでしょうか? ご教授いただきたく思います。

  • 音量、音圧、振幅、定義式、matlabについて よろしくお願いします。

    はじめまして 音楽家(作曲、アレンジ)をやりながら大学の修士課程で信号処理(音声)の研究をおこなっています。 曲のミックス、マスタリング時において 各パートまたは2ミックスされたものに聴感上、音を前に出したり、迫力を出したりする時にコンプを使って音圧をあげます。 一般的には、このときにコンプを使うことによりデコボコだった時間軸波形を平らになるようにします。波形が変わるので若干音質も変化をします。 音量の上げ下げをするときは、ボリュームボタンを操作することにより音質を変えることなく音量を変えることが出来ます。 ここで質問なんですが 音量と音圧の定義(式)または違いは何でしょう? 次に matlabを使って音声信号処理シミュレーションを行っているときに 音声をmatlabに読み込み、音声の音量を変化させたいと思って、音声信号を定数倍することにより音量の変化を試みました。 ここで、音声を定数倍することにより音量を上げようとしたときに音質が変わる気がするのですが気のせいでしょうか?(音量の変化=振幅の変化?) 気のせいではないとしたら この理由として、自分なりの考えは matlabで扱える振幅の範囲を超えてしまい自動的にコンプがかかったような状態になったのではないか と思っています。 どうなんでしょうか? また、matlabのコマンドとして、取り込んだ音声データのボリュームを操作できる関数はないのでしょうか? さらに 音の音色を決めるのは「波形」だと言われていますが 市販されている各アーティストのCDをPCに取り込み波形を見ると、当然ですがミックスやマスタリングを行っていることによりほぼ平らになってます。 大体どんなアーティストのCDの波形を見ても同じ様な波形をしていると思いますが、 聞いてみると当然、それぞれのアーティストの曲が聞こえますね どうゆうことなんでしょうか? よろしくお願いします。

  • matlab計算での進捗状況を知りたい

    matlabで数時間かかると思われる計算をさせる時、 走らせた後、しばらく(仮に1時間)経って、 現在全体のどれくらいの割合まで計算が行われたか調べるにはどうすればいいのでしょうか? 理想では、firefoxのダウンロードマネージャのように進捗割合や残り時間など 知ることが出来れば助かるなと思っております・・・ 一応、計算所要時間や開始、終了時刻はdispで最後に表示させるようにはしているんですが・・・ どなたかご存知の方教えてください。 。

  • エンコーダの信号が(A相、B相とも)途切れる

    MATLABのsimulinkで、エンコーダーからの信号をADボードを介してPCに入力してその信号をグラフ表示させるプログラムを作成したのですが、プログラムを実行すると、必ず0.3秒後あたりで0.05秒ほどエンコーダからの入力信号が途切れます(A相、B相とも0Vになる)。 エンコーダの回転数(モーターの回転数)を変えてもプログラム実行後0.3秒あたりで必ず途切れます。エンコーダへの入力電圧が途切れているのかなと思い、その電圧値を計測したのですが、問題ありませんでした。 ボードもしくはMATLABがおかしいのかと思い、エンコーダの信号を取り込んでいたボード端子に、別の信号を入力して同じことをやったら、信号は途切れず問題なく取り込めていました。なので、ボードやMATLAB、PCには問題ないように思いました。 なので、エンコーダに問題があるはずなのですが、一つ不可解なのは、必ずSimuinkプログラムを実行後"約0.3秒後"という同じ時間に信号が途切れるため、エンコーダに問題があるなら、そうなるはずがないと思います。エンコーダへの入力電圧は、simulinkプログラムとは独立した外部電源から入力しています。 となると、やはりMATLABかPCもしくはボードが原因なのかなと思うのですが、しかし、エンコーダ以外の信号は正常に取り込めています。エンコーダを繋いでいた(ADボードの)チャンネルに他の信号を入力しても問題なく取り込めています。 原因は何が考えられるでしょうか?