第5回 MATLAB入門
実施日:1996年7月11日
目次
- MATLABの起動
- 演算と基本関数と数量
- 演習1:連立方程式
- 演習2:FFT
- 演習3:数値積分と微分
- MATLABの起動
⇒
- 演算と基本関数と数量
- 演算
演算子 | 変数 | 変数 |
加算 | + | + |
減算 | - | - |
乗算 | .* | * |
除算 | ./ | / |
べき乗 | .^ | ^ |
共役・転置 | .' | ' |
- 関数
〇基本数学関数
〇特殊関数
〇基本統計関数
〇行列関数
inv,det,cond,eig,norm,...
〇図形処理関数
axis,line,surface,patch,subplot,...
〇コマンド
help ,save, load,print,!,look for,......
- 数量
pi,inf,eps,eye(単位行列),ones(全要素が1の行列),zeros( ”が0の行列)
⇒
- *** 演習1:連立方程式 ***
1 |1 2|
A=|3 4|を入力してみる.
★実行例:
★ % A=[1 2;3 4]
★ % A=[1 2;3 4] ;
★ 最後にセミコロンがあるかないかでどう違いましたか?
2 復素行列 |1+5i 2+6i|
A=|3+7i 4+8i| の入力
★実行例:
★ % WA= [1 2;3 4] ;WB=[5 6;7 8]
★ % A=WA+i*WB
★ 復素行列も扱えます。
3 Ax=bを求めてみよう.
ただし, | 1|
b=|−2|とする.
★実行例:
★ % b=[1 -2]'
★ % x=A¥b
4 xx=inv(A)*bとしてみるとどうなるでしょうか?やってみましょう。
5 桁数をあげる.
★実行例:
★ % format long
★ % x
★ % xx
6 Aの固有値,固有ベクトルを求める.
★実行例:
★ % eig(A)
★ % [X,D]=eig(A)
参考 [X,D]=eig(A,B).........一般固有値,固有ベクトル
⇒
- *** 演習2:FFT ***
太陽の黒点の数が300年にわたってデータファイルsunspot.datに作られている.
それを,読んできてフーリエ変換し,太陽活動の周期を求めてみよう.
1 sunspot.datを自分のカレントデレクトリーにcopyしてください.
まず内容をながめてみる.
★実行例:
★ % !cp /tmp/matlab/sunspot.dat sunspot.dat
★ % !more sunspot.dat
2 そのsunspot.datをプロットしてみましょう.
★実行例:
★ % load sunspot.dat .....データの読み込み
★ % year=sunspot(:,1);
★ % wolf=sunspot(:,2);
★ % plot(year,wolf); .....X軸にyear,Y軸にwolfをとる
★ % title('Sunspot Data') .....タイトルをつける
3 最初の50年分を表示する.
★実行例:
★ % plot(year(1:50),wolf(1:50))
★ % plot(year(1:50),wolf(1:50),'go')
★ % plot(year(1:50),wolf(1:50), year(1:50),wolf(1:50),'co')
4 フーリエ変換
★実行例:
★ % Y=fft(wolf);
★ % Y .....fftした結果を見る.
★ % Y(1:2)
★ % Y(1)=[ ];
.....1行目のデータを取り除く
★ % Y(1) .....Y(1)が取り除かれていることを確認
★ % plot(Y,'co')
★ % title('Fourier Coefficients')
★ % xlabel('Real Axis')
★ % ylabel('Imaginary Axis')
5 周期を求め表示する.
★実行例:
★ % n=length(Y)
★ % power=abs(Y(1:n/2)).^2;
★ % nyquist=1/2
★ % freq=(1:n/2)/(n/2)*nyquist;
★ % period=1./freq;
★ % plot(period,power);
★ % ylabel('Power');
★ % xlabel('Period(year /Cycle)');
6 peakになる点の座標を求める.
★実行例:
★ % index=find(power==max(power))
★ % period(index)
⇒
- *** 演習3:数値積分と微分 ***
1 MATLABを終了
2 エディターでhumps.mファイルをつくります.
★実行例:
★ % more humps.m
★ function y=humps(x)
★ y=1./((x-0.3).^2+0.01)+1./((x-0.9).^2+0.04)-6;
3 MATLABに入りの範囲でこの関数をプロットしてみましょう.
★実行例:
★ % x=-1:0.01:2;
★ % plot(x,humps(x))
4 humps(x)=0の0近傍と1近傍の解を求めましょう.
★実行例:
★ % r1=fzero('humps',0)
★ % r2=fzero('humps',1)
5 3.で描いたグラフに0近傍と1近傍の解を書き込んでみましょう.
★実行例:
★ % fplot('humps',[-1 2])
★ % grid
★ % hold on;plot(r1,0,'go');
★ % plot(r2,0,'bo'); hold off
6 r1<=x<=r2, humps(x)<=0で囲まれた部分の面積を求めてみましょう.
つまり,humps(x)をr1からr2まで積分すればよい.
まず、その部分を塗りつぶしてみましょう。
★実行例:
★ % hold on;
★ % patch([r1:0.02:r2],[humps(r1:0.02:r2)],'r'); hold off
7 シンプソン則で積分してみましょう.
★実行例:
★ % S=quad('humps',r1,r2)
8 今度は数値微分をしてみましょう.
★実行例:
★ % x=0:0.01:1;y=humps(x);
★ % z=diff(y)./diff(x);
★ % x(101)=[ ];y(101)=[ ];
★ % plot(x,y,'b',x,z,'g')
⇒
講習会内容一覧に戻る