• ベストアンサー

MATLABのplotについて

MATLABでplotを使う時、 軸の目盛の数字の有効桁を設定する方法を教えてください。 例えば 0 1 2 3 4 を 0.0 1.0 2.0 3.0 4.0 とすることは可能でしょうか?

  • 科学
  • 回答数1
  • ありがとう数2

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

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

例えば set(gca,'Xtick',(0:4),'Xticklabel','0.0|1.0|2.0|3.0|4.0'); とすればx=0,1,2,3,4のところに0.0,1.0,2.0,3.0,4.0という目盛が設定されます。 要は xtick:x軸に目盛を入れるところの設定 xticklabel:xtickで設定したところに書きこむラベル(ラベル|で分離されます) ということです。 でxticklabelに用いる文字列はsprintfで作れますので、 sprintf('%1.1f|',(0:4)) のようにすれば有効桁は好きに決められます。 参考になれば幸いです。

関連するQ&A

  • matlabでの右軸plot

    matlabでplotをする際に右軸でplotする方法を教えてください。

  • MATLABプロットの線にアルファ値を設定

    MATLABでプロットを行うときに、線にアルファ値を設定する(半透明にする)方法が分かりません。線種を変えたり、色を変えたりする方法はわかるのですが・・・。 よろしくお願いします。

  • Matlab 2行の行列をプロットしたいのですが

    こんにちは、Matlabを使い始めのものです。 二行の行列(2x10とか2x40など)にについて、一行目をx座標、二行目をy座標としてグラフ化したいのですが、うまくいきません。 自動的にx座標は列の番号となり、二つのグラフが現れてしまいます:y座標に一行目、二行目、両方がプロットされてしまいます。どうにか、一行目をx、二行目をy座標としてグラフ化できないでしょうか。おそらく、とても単純なことなのかもしれないのですが、どうしてもわからず、とても歯がゆい思いをしています・・・。どうかご教示ください。 何をしたいかといいますと、音声データをMatlabで取り込んだのですが、振幅データがずらっと並んだ、1x500000とかの行列が得られます。 これを、プロットすると、x軸はサンプル番号が並ぶわけですが、本当はx軸は時間であって欲しいため、音声データの行列にひとつ行を足して、時間軸を作ってあげました。つまり、今手元にあるのは、2x500000の行列で、一行目が時間、二行目が振幅となっています。これをx軸が時間軸、でy軸が振幅となるようにグラフ化してあげたいと考えています。 文章がわかり辛くて申し訳ないのですが、何卒よろしくお願いします。

  • MATLABのグラフで軸目盛りのフォントサイズを大きくする方法?

    MATLABのplotグラフで、 xlabel、ylabel、titleなどは、 FontSizeプロパティの指定により、 サイズを簡単に変更できるのですが、 軸の目盛りのフォントサイズを変更する方法が分からず 困っています。どなたか、キーワード、参考URLなど ご教示頂ければありがたいです。よろしくお願いします。

  • エクセルの折れ線グラフで、主目盛線上にデータ値をプロットしたい。

     エクセルの折れ線グラフを作成する場合、X軸の主目盛線上にデータ値をプロットさせる方法を知りませんか?  通常で作成すると、X軸の副目盛線上にはデータ値がプロットされますが、主目盛線上にはプロットされません。  主目盛線を表示せずに、副目盛線のみを表示させる事は出来ませんか? 下手な質問方法ですいません。判っていただけますか?

  • MATLABで外れ値をプロットする方法を教えてくだ

     MATLABで外れ値をプロットする方法を教えてください。  具体的には下記のとおりです。  MATLABで、中央値+中央値から±20%離れた時系列データをプロットするにはどうすればよいでしょうか? 冗長なprogramしか作成できないため、よい関数か、方法があれば教えていただきたく思い、 質問しました。 まず、時系列データですが、数十万点数からなる信号になっています。 この信号の中央値をだし、その中央値から±20%の範囲でひっかかるデータをplotしたく思っています。 中央値算出は、関数を知っていますので処理が早いのですが中央値から±20%の範囲でひっかかるデータをプロットするのにいまは、以下のような考えで行っています。 行データ、size(x(:)) ans=:1000000 1とおきます。 まず、 1)中央値を求める。 2)median+20%、median-20%を求める。 3) hold on;  for i=1:1:data-length   if(x(i)<=median-20% & x(i)>=median+20%) plot x(i) endif  end というようにしています。しかし、これではデータ一点一点検討する必要があるので冗長で、処理に時間が かかります。 そのため、for文を使わずに、 medi-20(:)=function(x(:),median-20) medi+20(:)=function(x(:),median+20) で計算できるような、関数functionを教えていただけると幸いです。 よろしくお願いします。

  • MATLABでのグラフ生成について。

    MATLABでのグラフ生成について。 MATLABでエクセルのデータを読み込みグラフを生成しています。 個人的にエクセルよりもきれいなグラフを作ることができると思いますので。 ただ、X軸を対数軸にした際、目盛り線がたくさんあり、非常に見づらいです。そこで、10,100,…,10000000,のときだけ線を出すようにしたいのですがどうすればよろしいのでしょうか? どなたかご存知の方いらっしゃいましたら、教えていただけると幸いです。

  • MATLABのプログラムでのデータ処理で困っています。

    こんにちは、MATLAB初心者の者です。 あるデータの処理をしなくてはならないのですがどのようにプログラムを作ってよいか分からず困っています。 データの内容はこのような数字が並んでいます。 522344 527870010500115000980009800079000780008000101000 529970009800119001040008900083000910008800101000 523800003010700120001120010000090001010010700117 ・・・・・・ これを1行目の3~4桁、5~6桁を取り出し、2行目の3~5桁、6~8桁、9~11桁・・・と3桁づつを1行目から取り出した数字の後に取り出したいのです。 23 44 787 23 44 001 23 44 050 23 44 011 23 44 500 23 44 098 ・・・・・・ 3行目以降も同じ方法です。 23 44 997 23 44 000 23 44 980 23 44 011 23 44 900 ・・・・・・ 説明が下手ですみません。 他の言語で作成した方が早いとは思いますし、こんな簡単なことも出来ないのに使うなとお叱りを受けそうなのですがMATLABでやらなければならない事情があり、困ってしまいこちらに質問する事にしました。 どうかよろしくお願いします。

  • 【Matlab】画像として保存するとplot3による点が消えてしまう

    【Matlab】画像として保存するとplot3による点が消えてしまう ----------------------------------------------------------------------------------- 最近Matlabを使用し始めた初心者です。よろしくお願いします。 surf出力とplot3による点が見える形で画像を出力したいと思っています。 画像はグラフを真下からのぞいたものとし、自動的に保存したいです。 自分の稚拙なプログラムではどうしてもプロットによる点が現れません。 対策をご教授いただきたいです。 プログラムの内容は、 二次元データをcsvから読み込み、surfで出力、 またデータ上のある座標での出力をplot3で点として表示するという流れを意図しています。 'Figure'ウィンドウ上(.fig)ではplot3で出力された点が表示されるのですが 画像(bmp,tiffで出力してみました)として出力した場合その点が消えてしまいます。 mファイルのプログラム、環境は以下のようになっています。 function test_show_graph(csvfilename) %------------------------------------ z = csvread(csvfilename); [height, width] = size(z); [x,y] = meshgrid(0:0.1:(height*0.1)); h_surf = surf(x,y,z); hold on zi = interp2(x,y,z,4,4, 'cubic'); plot3(4.0,4.0,zi+10,'.r','MarkerSize',30); plot3(4.0,4.0,zi-10,'.r','MarkerSize',30); hold off view([0, -90]); saveas(h_surf, 'test', 'tiff'); %Matlab&Simulink R2008a %WindowsVista SP1 %Dell StuioXPS(Intel Core i7) surfの表面に隠れて点か見えなくなっていると思い、 表面の上下に突き抜けるようにlineを出力してみたりしてみましたがダメでした。 駄文となり申し訳ありません。 皆様の知識をお借りできれば幸いです。

  • MATLABの使い方について

    プログラム超初心者です。 MATLABを使って3次元方程式をプロットしたいのですが基本的なやり方がいろいろわかってなくて困ってます。1から学ぶことのできるようないい解説サイトなどないでしょうか? ちなみに具体的にやりたいこととしてはいくつかあるのですが、ローレンツ方程式などをルンゲクッタ法で解いてプロットする、とかそんな感じです。このやり方についてだけでも示していただけたら幸いです。