Matlab演習 - Maebashi Institute of Technologyodagaki/EleMag/src/ppt/5.pdfMatlabとは...

24
Matlab演習

Transcript of Matlab演習 - Maebashi Institute of Technologyodagaki/EleMag/src/ppt/5.pdfMatlabとは...

Page 1: Matlab演習 - Maebashi Institute of Technologyodagaki/EleMag/src/ppt/5.pdfMatlabとは •数値解析用ソフトウェアである •大規模行列演算やグラフィック機能が充実している

Matlab演習

Page 2: Matlab演習 - Maebashi Institute of Technologyodagaki/EleMag/src/ppt/5.pdfMatlabとは •数値解析用ソフトウェアである •大規模行列演算やグラフィック機能が充実している

Matlabとは

•数値解析用ソフトウェアである

•大規模行列演算やグラフィック機能が充実している

⇒ 電磁気現象のシミュレーションを行う

Page 3: Matlab演習 - Maebashi Institute of Technologyodagaki/EleMag/src/ppt/5.pdfMatlabとは •数値解析用ソフトウェアである •大規模行列演算やグラフィック機能が充実している
Page 4: Matlab演習 - Maebashi Institute of Technologyodagaki/EleMag/src/ppt/5.pdfMatlabとは •数値解析用ソフトウェアである •大規模行列演算やグラフィック機能が充実している

ワークスペース:変数が一時的に蓄えられる

Page 5: Matlab演習 - Maebashi Institute of Technologyodagaki/EleMag/src/ppt/5.pdfMatlabとは •数値解析用ソフトウェアである •大規模行列演算やグラフィック機能が充実している
Page 6: Matlab演習 - Maebashi Institute of Technologyodagaki/EleMag/src/ppt/5.pdfMatlabとは •数値解析用ソフトウェアである •大規模行列演算やグラフィック機能が充実している
Page 7: Matlab演習 - Maebashi Institute of Technologyodagaki/EleMag/src/ppt/5.pdfMatlabとは •数値解析用ソフトウェアである •大規模行列演算やグラフィック機能が充実している
Page 8: Matlab演習 - Maebashi Institute of Technologyodagaki/EleMag/src/ppt/5.pdfMatlabとは •数値解析用ソフトウェアである •大規模行列演算やグラフィック機能が充実している

行列演算 3×3の行列が作成できる

要素番号は1から始まるので

>> a(2,2)

は “5” になる

Page 9: Matlab演習 - Maebashi Institute of Technologyodagaki/EleMag/src/ppt/5.pdfMatlabとは •数値解析用ソフトウェアである •大規模行列演算やグラフィック機能が充実している

行列の作り方

•以下のコマンドを実行すると行列[1,2,3,4,5]が作成される

>>mat = [1:1:5];

(>>mat = [1:5]としてもよい)

mat = [初期値:ステップ幅:終値]

•以下のコマンドにより3×3のゼロ行列,単位行列が作成される.

zmat, omatは任意の変数名.

>>zmat = zeros(3,3)

>>omat = ones(3,3)

Page 10: Matlab演習 - Maebashi Institute of Technologyodagaki/EleMag/src/ppt/5.pdfMatlabとは •数値解析用ソフトウェアである •大規模行列演算やグラフィック機能が充実している

演算子 目的 説明

+加算 A+Bは Aと Bを足します。

+単項プラス +Aは Aを返します。

-減算 A-Bは Aから Bを引きます。

-単項マイナス -Aは Aの要素の単項マイナスを求め

ます。

.*要素単位の乗算 A.*Bは Aと Bの要素単位の積を求め

ます。

.^要素単位のべき乗 A.^Bは要素が A(i,j) の B(i,j) 乗である

行列を求めます。

./配列の右除算 A./Bは要素が A(i,j)/B(i,j) の行列を求

めます。

.¥配列の左除算 A.¥Bは要素が B(i,j)/A(i,j) の行列を求

めます。

.'配列転置 A.'は Aの配列転置です。複素数行列

の場合、これは複素共役転置を含みません。

http://jp.mathworks.com/help/matlab/matlab_prog/array-vs-matrix-operations.html?refresh=true

Page 11: Matlab演習 - Maebashi Institute of Technologyodagaki/EleMag/src/ppt/5.pdfMatlabとは •数値解析用ソフトウェアである •大規模行列演算やグラフィック機能が充実している

>> a*a

の結果と比較せよ

Page 12: Matlab演習 - Maebashi Institute of Technologyodagaki/EleMag/src/ppt/5.pdfMatlabとは •数値解析用ソフトウェアである •大規模行列演算やグラフィック機能が充実している

演算子 目的 説明

* 行列乗算 C = A*Bは、行列 Aと Bの線形代数の積です。Aの列数は Bの行数と等しくなければなりません。

/ 行列の右除算 x = B/Aは、式 xA = B の解です。行列 Aと Bの列数は同じでなければなりません。左除算演算子の場合はB/A = (A'¥B')'となります。

¥ 行列の左除算 x = A¥Bは、式 xA = B の解です。行列 Aと Bの行数は同じでなければなりません。

^ 行列のべき乗 Bがスカラーの場合、A^Bは Aの B乗です。Bがそれ以外の値の場合は、固有値および固有ベクトルを含む計算となります。

' 複素共役転置 A'は Aの線形代数の転置です。複素数行列の場合、これは複素共役転置となります。

http://jp.mathworks.com/help/matlab/matlab_prog/array-vs-matrix-operations.html?refresh=true

Page 14: Matlab演習 - Maebashi Institute of Technologyodagaki/EleMag/src/ppt/5.pdfMatlabとは •数値解析用ソフトウェアである •大規模行列演算やグラフィック機能が充実している

演習

• a=[1,0,0]とb=[0,1,0]の内積を求めよ

• aとbは直交ベクトル• 内積計算の答えはスカラ

•上記の行列a と bの外積を求めよ

• aとbは直交ベクトル• 外積計算の答えはベクトル• 外生計算の答えはaとbに対する直交ベクトル

Page 15: Matlab演習 - Maebashi Institute of Technologyodagaki/EleMag/src/ppt/5.pdfMatlabとは •数値解析用ソフトウェアである •大規模行列演算やグラフィック機能が充実している

制御構文 if文

if 真理値A

処理1

elseif 真理値B

処理2

else

処理3

end

a = 1;

if a == 1

b=1;

elseif a == 2

b=2;

else

b=0;

end

例題:構文:

Page 16: Matlab演習 - Maebashi Institute of Technologyodagaki/EleMag/src/ppt/5.pdfMatlabとは •数値解析用ソフトウェアである •大規模行列演算やグラフィック機能が充実している

制御構文 for文

for 初期値:ステップ幅:終了値

処理

end

j=0;

for i=1:1:10

j = j + i;

end

例題:構文:

Page 17: Matlab演習 - Maebashi Institute of Technologyodagaki/EleMag/src/ppt/5.pdfMatlabとは •数値解析用ソフトウェアである •大規模行列演算やグラフィック機能が充実している

3次元プロットのためのmeshgridによる行列作成

•以下のコマンドにより1次元行列x, yが作成できる

x=[-0.2:0.01:0.2];

y=[-0.2:0.01:0.2];

• このx, yから2次元平面の全ての点を表現する行列を作成するためには

[X, Y] = meshgrid(x, y)

とする.ワークスペースのX, Yの行列サイズを確認せよ.

Page 18: Matlab演習 - Maebashi Institute of Technologyodagaki/EleMag/src/ppt/5.pdfMatlabとは •数値解析用ソフトウェアである •大規模行列演算やグラフィック機能が充実している

3次元描画

[X,Y] = meshgrid(-2:0.2:2,-2:0.2:2);Z = X.*exp(-X.^2 - Y.^2);figure(1);surface(X,Y,Z);figure(2);contour(X,Y,Z);

メッシュグリッドに対応したデータを作成し描画することができる

Page 19: Matlab演習 - Maebashi Institute of Technologyodagaki/EleMag/src/ppt/5.pdfMatlabとは •数値解析用ソフトウェアである •大規模行列演算やグラフィック機能が充実している

mファイルの作成

• コマンドラインに

>> edit

と入力するとエディタが立ち上がる.

• コマンドを記述し実行するとコマンドを上から下に順番に実行できる.

• clear all; と記述するとワークスペースの変数が消去されるので,1行目に記述すると良い.

Page 20: Matlab演習 - Maebashi Institute of Technologyodagaki/EleMag/src/ppt/5.pdfMatlabとは •数値解析用ソフトウェアである •大規模行列演算やグラフィック機能が充実している

ベクトル描画

• 2次元ベクトルを表示する場合は

quiver(x0,y0, Δx1, Δy1)

• 3次元ベクトルを表示する場合は

quiver3(x0,y0,z0, Δx1, Δy1, Δz1)

例えば

a=[1,0,0];

quiver3(0,0,0,a(1),a(2),a(3));

と入力すると1本ベクトルが描かれる

(x0,y0) (Δx1, Δy1)

Page 21: Matlab演習 - Maebashi Institute of Technologyodagaki/EleMag/src/ppt/5.pdfMatlabとは •数値解析用ソフトウェアである •大規模行列演算やグラフィック機能が充実している

ベクトル描画•続けてquiver3(0,0,0,b(1),b(2),b(3))と入力すると前のベクトルが消えてしまう

•複数のベクトルを重ね書きするためにはhold onコマンドを一度だけ実行する必要がある

figure(1);

a=[1,0,0];

b=[0,1,0];

quiver3(0,0,0,a(1),a(2),a(3))

hold on

quiver3(0,0,0,b(1),b(2),b(3))

c=cross(a,b);

quiver3(0,0,0,c(1),c(2),c(3))

Page 22: Matlab演習 - Maebashi Institute of Technologyodagaki/EleMag/src/ppt/5.pdfMatlabとは •数値解析用ソフトウェアである •大規模行列演算やグラフィック機能が充実している

ベクトル場の表示

[X,Y] = meshgrid(-2:0.25:2,-1:0.2:1);Z = X.* exp(-X.^2 - Y.^2);[U,V,W] = surfnorm(X,Y,Z);figurequiver3(X,Y,Z,U,V,W)hold onsurf(X,Y,Z)

Page 23: Matlab演習 - Maebashi Institute of Technologyodagaki/EleMag/src/ppt/5.pdfMatlabとは •数値解析用ソフトウェアである •大規模行列演算やグラフィック機能が充実している

plotコマンド

• 2次元のグラフを作るときに利用する

t=[0:pi/100:2*pi-pi/100];

y=sin(t);

plot(t,y)

Page 24: Matlab演習 - Maebashi Institute of Technologyodagaki/EleMag/src/ppt/5.pdfMatlabとは •数値解析用ソフトウェアである •大規模行列演算やグラフィック機能が充実している

アニメーション

figure;

hold on

for t=0:pi/100:2*pi-pi/100

plot(t,sin(t),'ro');

pause(0.1);

end