• 締切済み

プログラムについて(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 ------------------------------------------------------ お詳しい方よろしくお願いします.

みんなの回答

  • masudaya
  • ベストアンサー率47% (250/524)
回答No.4

何がわるいかよく分かりませんが, とりあえず,表示するようにしました. t=10; r=400:699; y= 18*t.^(0.75)*sign(r); plot(r,y) hold on r=700:1059; y=18*t^(0.75)*10.^(0.002*(r-700)); plot(r,y) r=1050:1149; y=90*t.^(0.75)*1*1*sign(r) plot(r,y) r=1150:1199; y=90.*t.^(0.75).*1.*10.^(0.018.*(r-1150)); plot(r,y) r=1200:1399; y= 90*t.^(0.75)*1*8*sign(r); plot(r,y) r=1400:1499 y= 5600*t.^(0.25)*sign(r); plot(r,y)

  • trytobe
  • ベストアンサー率36% (3457/9591)
回答No.3

plot の前(上)の end を削除しないと、そこで終わってるかも。

nknknknk222
質問者

補足

ご回答ありがとうございます. if文に対するendなので,それは違いました.

  • f272
  • ベストアンサー率46% (7974/17046)
回答No.2

if 400<= r <700 どこでこんな書き方を学んだの? if r <700 としたいんじゃないの?そのほかも elseif r <1050 elseif r <1150 elseif r <1200 elseif r <1400 elseif r <1500 だよね。ところでrが1500以上のときは?

nknknknk222
質問者

補足

ご回答ありがとうございます. t=10; for r=400:1:2000 %波長 if r <700 y= 18*10.^(0.75); elseif r <1050 y= 18*10.^(0.75)*10.^(0.002*(r-700)); elseif r <1150 y= 90*10.^(0.75)*1*1; elseif r <1200 y= 90*10.^(0.75)*1*10.^(0.018*(r-1150)); elseif r <1400 y= 90*10.^(0.75)*1*8; elseif r <1500 y= 5600*10.^(0.25); end plot(r,y) end としましたが、グラフにプロットが打たれません,,何故でしょうか..

  • trytobe
  • ベストアンサー率36% (3457/9591)
回答No.1

なんか、ムダな空白とピリオドがたくさん入っているような気がしますが、それを取り除いた上で、 ・t=10 の行末は; ・plot(r,y) の行末も; にしてもダメですか。

nknknknk222
質問者

補足

ご丁寧なご回答ありがとうございます. ピリオドを取り除き、t=10 の行末に;、plot(r,y) の行末に;としました。 グラフは表示されるのですが、プロットされていません、、 何故でしょうか...

関連するQ&A

  • MATLAB

    matlabで for x=1:10 for y=1:10 for z=1:10 f=2*x+3*y-4*z; end end end のようなプログラムで、最大のときのfの値と、そのときのx,y,zの値を表示させるにはどのように書けばいいでしょうか?

  • 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π) を格軸が同じスクリーンでグリッド表示するには表示するにはどうすればいいでしょうか? 多くなってしまってすいません。どれか一つでもわかる方はお願いします。また、不明瞭な点はご指摘お願いします。

  • matlab制御文での値の格納?

    現在matlabを使用してfor文で1から3000まで繰り返し、sigmaを求めるというプログラムを作っているのですが、うまくいきません。これだとn=3000のsigmaの値しかでてきません。sigmaにfor文で繰り返し求めたすべての値を格納したいです。初心者で低レベルな質問ですみません。どなたか教えていただけませんか。 sigma=0; for n=1:3000, if n <=300 dsig=1; elseif n <= 950 dsig=-1; elseif n <= 1700 dsig=1; elseif n <= 2550 dsig=-1; elseif n <= 3000 dsig=1; end sigma =sigma + dsig; end

  • MATLABについての質問です。

    大学の研究していてMATLABでわからないところがあるのでぜひ教えて頂けたらと思っています。 よろしくお願い致します。 現在任意の多角形障害物を設置し,それらを回避する折れ線経路を全部求めるプログラムを作っているのですがどのように作ればいいかわかりません。 今は始点と終点を決めてクリックした所をつないでいくプログラムができたのですが問題文に沿ってできていません。 このプログラム後はダイクストラの方法で最短折れ線経路を求めるので それを含めてよろしくお願い致します。 clear all; close all; clc; init=1; final=1000; figure(1) for loop=init:final [x,y] = ginput A=[x,y] if 0<=x(:,:)&x(:,:)<=1&0<=y(:,:)&y(:,:)<=1 B{loop} =A else break end end figure(2) for C=init:loop-1 B{C} fill(B{C}(:,1),B{C}(:,2),'g');hold on axis([0,1,0,1]); end [x,y] = ginput pb=[x,y] figure(3) for C=init:loop-1 fill(B{C}(:,1),B{C}(:,2),'g');hold on axis([0,1,0,1]); plot(pb(:,1),pb(:,2),'o');hold on end for D=init:final [x,y] = ginput if 0<=x(:,:)&x(:,:)<=1&0<=y(:,:)&y(:,:)<=1 plot([pb(1,1),x',pb(2,1)],[pb(1,2),y',pb(2,2)],'-*');hold on node{D}=[[pb(1,1),x',pb(2,1)],[pb(1,2),y',pb(2,2)]] B{D} = sum(node{D}) else break end end for E=init:D-1 B{E} end

  • 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で複数条件のif文を行列計算で行うには?

    matlabで複数条件のif文を行列計算で行うには? matlabではfor文などは行列計算で回したほうが高速化できると聞きました。 for文でのやりかたはわかったのですが、複数条件でのif文ではどのように書けばよいのでしょうか? 自分のプログラムは以下のようなものです for i=1:100 for j=1:100 theta_kari=atan(abs(B(j,i))/abs(A(j,i))); if A(j,i)>=0&&B(j,i)>=0 theta(j,i)=theta_kari; elseif A(j,i)<0&&B(j,i)>=0 theta(j,i)=theta_kari+(pi/2); elseif A(j,i)<0&&B(j,i)<0 theta(j,i)=theta_kari+pi; elseif A(j,i)>=0&&B(j,i)<0 theta(j,i)=theta_kari+(pi/2*3); end end end よろしくお願いします

  • 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のプログラム

    インターネットのweb上のデータを読み込んでグラフ表示するといったプログラムをMATLABを用いて考えているのですが、例えばYahooのファイナンスの株価データを読み込むといった場合、どうすればよいのでしょうか? ちなみに自分はJAVAやCは多少経験済みですが、MATLABはまったくの初心者でほとんどわからない状態です。 どうか簡単でいいのでヒントになるようなことを教えていただければ幸いです。

  • Matlabについて質問です

    Matlabについて質問です。 長さがdataの数のデータがあり次のように分類したいのですが、データの中の-0.0074などが1になってくれません。 どこに原因があると思われますか?よろしくお願いします! recd=zeros(length(data),1); for n=1:length(data) if data(n)<-0.01; recd(n) = 0; elseif(-0.01<=data(n)<0); recd(n) = 1; elseif(0<=data(n)<0.01); recd(n) = 2; else recd(n) = 3; end 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を出力してみたりしてみましたがダメでした。 駄文となり申し訳ありません。 皆様の知識をお借りできれば幸いです。