MATLABの質問について

このQ&Aのポイント
  • MATLAB内での添え字のつけ方やグラフの最大値、パラメータ関数についての質問についてまとめました。
  • MATLAB内での添え字のつけ方やグラフの最大値、パラメータ関数についての質問についてまとめました。
  • MATLAB内での添え字のつけ方やグラフの最大値、パラメータ関数についての質問についてまとめました。
回答を見る
  • ベストアンサー

MATLABに詳しい方にお願いです。

最近MATLABの計算式をやっているのですが、わからないことがいくつかあるので質問させてもらいます。 ・MATLAB内での添え字のつけ方はどうするのでしょうか?例えば、小文字のxの右下に数字の1をうつといった具合です。 ・グラフの最小値を記すプログラムは以下の通りだと思いますが、 f=inline('x*cos(x)-0.3') [x, fval]=fminbnd(f,0,2) fplot(f,[0,2]) hold on plot(x,fval,'*') このグラフの最大値を記すにはどうすればいいでしょうか? ・パラメータ関数 (x,y)=(3sin t,5cos t) (0≦t≦20π) を格軸が同じスクリーンでグリッド表示するには表示するにはどうすればいいでしょうか? 多くなってしまってすいません。どれか一つでもわかる方はお願いします。また、不明瞭な点はご指摘お願いします。

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

  • ベストアンサー
  • rabbit_cat
  • ベストアンサー率40% (829/2062)
回答No.1

>MATLAB内での添え字のつけ方はどうするのでしょうか? ベクトル(配列)のこと?変数名のあとに括弧で添え字を書きます。x(1)、x(2) など。 それとも、グラフのタイトルなどに書きたい場合?TeX式に title('X_1') とか書けば下付きになります。 >グラフの最大値を記すにはどうすればいいでしょうか? f=inline('x*cos(x)-0.3') を f=inline('-(x*cos(x)-0.3)') に変更します。これは冗談ではなくてMatlabでの正統なやり方です。 >格軸が同じスクリーンでグリッド表示するには表示するにはどうすればいいでしょうか? 何をやりたいのかよくわからないんのですが、つまりこれの軌跡を描きたいってことですか? t=0:0.1:20*pi; plot(3*sin(t), 5*cos(t)); で出ますけど、そういうことではない?グリッド表示っていうのは何をイメージしてますか?単純に、 grid on ってこと?

関連するQ&A

  • 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)について

    vehi=[0,1,1,-1,-1,0;2,1,-1,-1,1,2]; plot(vehi(1,:),vehi(2,:));axis equal;axis([-15 15 -15 15]); [x,y]=ginput(1); hold on;plot(x,y,'p');hold off; [x1,y1]=ginput(1); hold on;plot([x x1],[y y1]);hold off; theta=atan2(y1-y,x1-x)-pi/2; R=cos(theta),-sin(theta);sin(theta),cos(theta)]; newvehi=R*vehi; hold on;plot(newvehi(1,:)+x,newvehi(2,:)+y);hold off このプログラムは実効したんでどのようになるかは分るんですが、講義で、プログラムの説明がされなかったので、全然意味が分りません。 vehiって何ですか? ginput(1)って何をしているんですか?(1)の意味って何ですか? hold onは何をしているんでしょうか? plot(x,y,'p')は何をしているんですか?pって何ですか? hold offで何をしてるんですか? theta=atan2(y1-y,x1-x)-pi/2は何をしているんですか?atan2って何ですか?アークタンジェント2? plot(newvehi(1,:)+x,newvehi(2,:)+y)って何をしてるんですか? ほとんど意味が分りません。特に、atan2とかは意味不明です。 それぞれが何をしているのか順序を追って説明をお願いします。 分りやすい解説をお願いします。

  • MATLABの使い方

    純粋な数学の質問じゃなくて申し訳ないのですが、数学に関することなのでここで質問させていただきました。MATLABを使って以下のことを計算させたいのですが、その入力の仕方を教えてください。 1.以下の近似値を求めよ。 (1)e=lim[n→∞](1+1/n)^n (2)e=Σ[n=0→∞]1/(n!) (3)π=4(1-1/3+1/5-1/7+…) (4)π=4{4(1/5-1/(3・5^3)+1/(5・5^5)-…)-(1/239-1/(3・239^3)+1/(5・239^5)-…)}  (5)100^(1/9) (6)5^(-x)=x 2.以下の関数のグラフを表示させる  (1)e^(-x)・Arctanx (-5≦x≦5)  (2)x=(t^2-t-3)e^(t)・cost,y=(t^2-5t+1)e^(t)・sint (-1≦t≦10) MATLABに関してはまったくの初心者なので、できれば入力方法を具体的に示していただければ幸いです。よろしくお願いします。

  • matlabについて

    こんにちは。matlabについての質問です。 matlabについてまったくの初心者なのですが、大学のパソコンに入っているmatlabでsymsという変数の指定をしても、エラー表示がでてしまいます。これはどうやらmatlabに追加のtoolが入っていないと使えないということが調べていたらわかりました。この場合たとえば、f=x^2-x-1でf=0をxについて説くという場合どのようにmatlabに入力すればいいのですか?いろいろ調べたのですがよくわからなくて・・・。また、僕みたいな超初心者でもわかりやすいmatlab入門書やサイトで、お薦めの本などありましたら、教えていただきたいです。お願いします。

  • MATLABの極座標を用いたアニメーション

    MATLABを用いて極座標表示するpolarとpauseを用いて簡易的なアニメーションを作っています。その際、半径RHOの大きさによって、軸のスケールが変わってしまい、どうしても見づらくなってしまいます。 plotをaxisでスケールを固定するような操作を、polarの場合はどのようにして行うことが出来るか、ご存知の方は教えてください。 以下に例を示しておきます。 t = 0:.01:2*pi; for n=1:50 A=polar(t,n*sin(2*t).*cos(2*t)); caxis([0 50]) pause(0.01) end

  • 【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で以下のプログラムを実行しているのですが、 グラフが表示されません。 何故でしょうか、、。 ----------------------------------------- t=10 for r=400:1:2000 %波長 if 400<= r <700 y= 18*t.^(0.75); elseif 700<= r <1050 y= 18.*t.^(0.75).*10.^(0.002.*(r-700)); elseif 1050<= r <1150 y= 90*t.^(0.75)*1*1; elseif 1150<= r <1200 y= 90.*t.^(0.75).*1.*10.^(0.018.*(r-1150)); elseif 1200<= r <1400 y= 90*t.^(0.75)*1*8; elseif 1400<= r <1500 y= 5600*t.^(0.25); end plot(r,y) end ------------------------------------------------------ お詳しい方よろしくお願いします.

  • matlabでplotを使う際の横軸設定 

    MATLAB R2013a を使って折れ線グラフを書こうとしています。 1*600の配列の中に計測データを格納しています。 これをDataとします。 このデータは計測対象を3mmずつ600回移動させて計測したものです。 plot(Data) とした場合、当然横軸は配列の添え字が使われます。 このとき、横軸をmmスケールで表示させたいと思っています。 また、メモリの間隔を指定し(10データ, 30mm)ごとに表示させたいと思っています。 初めての質問なので至らない点が多いかもしれませんが、よろしくお願い致します。

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

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

  • matlab計算について

    matlab独学で進めていますが、時間がないのと頭が足りないので 質問させていただきます。 p1=0.1; p2=2.663*10^6; D= 1:10:1000; A=(log(D)+12.7)/1.1; f(D)=(1/power((2*pi),0.5)*1.1*D)*exp(-0.5*power(A,2)); Y=(p/pash*4/3*pi*power((D/2),3))*f(D) plot(D,Y) X軸がD、Y軸がf(D)のグラフを作成したいです。 内部行列の次元は一致しなければなりません。 とエラーが出ます。このエラーの原因を教えてください。 間違いだらけかもしれませんが...ご指摘よろしくお願いします。

専門家に質問してみよう