Tangwx

Tangwx

博客网站

MATLAB期末復習

MATLAB 期末復習#

1 行列の入力方法#

>>a=[1 2 3;4 5 6; 7 8 9]
>>a=[1,2,3;4,5,6; 7,8,9]
>>a=[1:3;4:6;7:9]
>> a=[1 2 3
4 5 6
7 8 9]

a =

     1     2     3
     4     5     6
     7     8     9
>>

2 行列の乗算#

A * B
A(m x n) B(p x q) はn=pのときにのみ乗算可能 線形代数における行列の乗算
A .* B
サイズが完全に一致し、対応する要素を乗算

3 行列の転置#

実数行列の転置#

A'

>> A = [1 2 3; 4 5 6; 7 8 9]

A =

     1     2     3
     4     5     6
     7     8     9

>> A'

ans =

     1     4     7
     2     5     8
     3     6     9

複素数行列の転置#

A' 共役転置

A.' 非共役転置

>> A = [1+i 2+i 3+i; 4+i 5+i 6+i; 7+i 8+i 9+i]
A =
   1.0000 + 1.0000i   2.0000 + 1.0000i   3.0000 + 1.0000i
   4.0000 + 1.0000i   5.0000 + 1.0000i   6.0000 + 1.0000i
   7.0000 + 1.0000i   8.0000 + 1.0000i   9.0000 + 1.0000i

>> A'
ans =
   1.0000 - 1.0000i   4.0000 - 1.0000i   7.0000 - 1.0000i
   2.0000 - 1.0000i   5.0000 - 1.0000i   8.0000 - 1.0000i
   3.0000 - 1.0000i   6.0000 - 1.0000i   9.0000 - 1.0000i

>> A.'
ans =
   1.0000 + 1.0000i   4.0000 + 1.0000i   7.0000 + 1.0000i
   2.0000 + 1.0000i   5.0000 + 1.0000i   8.0000 + 1.0000i
   3.0000 + 1.0000i   6.0000 + 1.0000i   9.0000 + 1.0000i

4 ランダム分布#

一様分布#

>> rand(5)  [0,1]の間の一様分布を生成

ans =

    0.8869    0.0768    0.3996    0.6761    0.7636
    0.0021    0.7990    0.6387    0.1379    0.8417
    0.7377    0.4168    0.6586    0.1675    0.7409
    0.4085    0.2020    0.3824    0.3339    0.2610
    0.5768    0.7958    0.4104    0.1429    0.9621

正規分布#

>> randn(5)  N[0,1]に従う標準正規分布を生成

ans =

   -0.3534   -2.1492    0.2811   -0.2420    0.1620
   -0.5709   -0.5303    1.1760    0.5279   -0.0394
    0.8749    0.2686    0.8725    0.5440    0.2960
   -1.0153    0.2161   -0.9298    1.5400   -1.1293
    0.7904    0.7901   -0.1329   -0.5585   -1.0672
    
平均3、分散9の正規分布
x~N(μ,σ²)
ax+b~N(aμ+b,(aσ)²)
aμ+b = 平均
(aσ)² = 分散
a*randn(p,q)+b
p,q 行列のサイズはp*q

>> 3*randn(2,3)+3

ans =

    6.5279    5.1196    4.8656
    5.5406   -0.0497    5.2151

5 行列式#

det()

6 行列の逆#

inv 正方行列かつ非特異

pinv() 特異で、計算結果は擬似逆

7 行列の格納方法#

行列は列ごとに格納される

8 行列の和#

行列の和も列ごとに求められる

>> A = [1 2 3; 4 5 6; 7 8 9]
A =
     1     2     3
     4     5     6
     7     8     9

>> sum(A)
ans =
    12    15    18

9 行列の縮小#

>> a = [1:4;5:8;9:12;13:16]

a =

     1     2     3     4
     5     6     7     8
     9    10    11    12
    13    14    15    16

>> b = a(2:3,3:4)  前の2:3は2行と3行、後の3:4は3列と4列

b =

     7     8
    11    12

行または列を削除

a =

     1     2     3     4
     5     6     7     8
     9    10    11    12
    13    14    15    16

>> a(2,:)=[] 行を削除

a =

     1     2     3     4
     9    10    11    12
    13    14    15    16

>> a(:,2)=[] 列を削除

a =

     1     3     4
     9    11    12
    13    15    16

10 AND OR NOT 演算#

非零はすべて1として、AND OR NOT 論理演算を行うことに注意

11 diag 関数を使用して行列を生成#

例題: diag などの関数を使用して次の行列を生成:
a = [0 0 8; 0 -7 5; 2 3 0]
b = [2 0 4; 0 5 0; 7 0 8]
その後、reshape 関数を使用してそれらを行ベクトルに変換

使用する関数

使用する関数:
d=diag(A), Aが行列の場合、dはAの対角線要素からなるベクトルであり、Aがベクトルの場合、dはベクトルAを対角線上の要素とする対角行列

B = fliplr(A), 行列Aの列を垂直軸に沿って左右反転
Aが行ベクトルの場合、fliplr(A)はAの要素の順序を反転させる。
Aが列ベクトルの場合、fliplr(A)はAと等しい。
filpup() 行列を上下反転

B = reshape(A,...,[],...), 特定の次元を指定した後、残りの次元の長さをプレースホルダー[]で表し、次元の積がprod(size(A))に等しくなるようにする。

>> A=diag([8 -7 2])				% 行列を生成。要素は対角線上にある

A =

     8     0     0
     0    -7     0
     0     0     2

>> B=A+diag([5 3],-1)				% 副対角線行列を生成し、Aと加算

B =

     8     0     0
     5    -7     0
     0     3     2

>> a=fliplr(B)						% 行列を反転

a =

     0     0     8
     0    -7     5
     2     3     0
     
>> A=reshape(a,1,9)				% 行列を行ベクトルに並べる、`a.'はaを転置、1は1行を指定、9は要素9個を指定

A =

     0     0     2     0    -7     3     8     5     0
     
>> q = diag([2 0 8]) % 主対角線要素

q =

     2     0     0
     0     0     0
     0     0     8

>> r = diag([4 5 7]) % 副対角線要素

r =

     4     0     0
     0     5     0
     0     0     7

>> w = fliplr(r) % 副対角線要素を左右反転

w =

     0     0     4
     0     5     0
     7     0     0

>> b = q+w % 2つの行列を加算

b =

     2     0     4
     0     5     0
     7     0     8

>> B=reshape(b.',1,[]) % 行ベクトルに変換

B =

     2     0     4     0     5     0     7     0     8     

12 変数名の要件#

MATLAB では変数名は数字、アルファベット、アンダースコアのみで構成され、必ずアルファベットで始まる必要があります。MATLAB の変数は大文字と小文字を区別します。

13 .m ファイル#

.m ファイルはスクリプトファイルと関数ファイルに分かれ、スクリプトファイルと関数ファイルは同じフォルダ内に存在する必要があります。

スクリプトファイル#

関数ファイル#

関数ファイルの形式

function [] = 関数名()

end

14 曲線描画#

plot#

plot(x,y)

plot(x1,y1,'op1',x2,y2,'op2',...,xn,yn)平面図形を描画

y1=2x+1
x = 1:0.1:10
y1 = 2.*x+1
y2=...
plot(x1,y1,...,x2,y2,...)

op 線型 色 点型

線型
- 実線
: 破線
-. 点線
-- 破線

+
*
.

x
s
d 菱形
v
^
<
>
P 五角形
h 六角形

r	赤
g	緑
b	青
k	黒
y	黄
w	白
m	マゼンタ
c	シアン

plot3#

pot3 (x1,y1,z1,'op1',x2,y2,z2,'op2',...,xn,yn,zn,'opn') 空間図形を描画

fplot#

fplot ('fun',[a,b]) % 関数 fun を [a,b] の範囲で描画

fplot(@(x) 2*exp(-0.5*x)*sin(2*pi*x),[0,2*pi],'gd-')

15 曲面描画#

平面グリッドの生成#

meshgrid(x,y)

x = a:ステップ:b;
y = c:ステップ:d;

[x,y] = meshgrid(x,y);

x = [1 2 3 4]
y = [2 4 6]
[x y] = meshgrid(x,y);

グリッド曲線の描画#

mesh(x,y,z)

塗りつぶし型曲面の描画#

surf(x,y,z)

平面等高線の描画#

contour(x,y,z)

3D 等高線の描画#

contour3(x,y,z)

複数の図形を表示#

subplot(グリッド列,グリッド行,位置)
subplot(2,2,3)% 2列2行のグリッドの3番目の位置に表示

タイトルの追加#

title ("タイトル")

X 軸ラベルの追加#

xlabel ("x 軸ラベル")

Y 軸ラベルの追加#

ylabel ("y 軸ラベル")

スケール範囲の調整#

axis(Xmin,Xmax,Ymin,Ymax)

配列の事前割り当て#

y=zeros(size(x))

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。