Chapter 1 An Introduction to MATLABWord格式.docx

上传人:b****6 文档编号:19235017 上传时间:2023-01-04 格式:DOCX 页数:22 大小:63.12KB
下载 相关 举报
Chapter 1 An Introduction to MATLABWord格式.docx_第1页
第1页 / 共22页
Chapter 1 An Introduction to MATLABWord格式.docx_第2页
第2页 / 共22页
Chapter 1 An Introduction to MATLABWord格式.docx_第3页
第3页 / 共22页
Chapter 1 An Introduction to MATLABWord格式.docx_第4页
第4页 / 共22页
Chapter 1 An Introduction to MATLABWord格式.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

Chapter 1 An Introduction to MATLABWord格式.docx

《Chapter 1 An Introduction to MATLABWord格式.docx》由会员分享,可在线阅读,更多相关《Chapter 1 An Introduction to MATLABWord格式.docx(22页珍藏版)》请在冰豆网上搜索。

Chapter 1 An Introduction to MATLABWord格式.docx

A(i,j):

矩陣A在第i個row(列),第j個column(行)的元素

A(:

j):

columnjofA

A(i,:

):

rowiofA

4:

9):

allthe4th~9thcolumnsofA(是A的子矩陣)

♦矩陣內的entries可分別自行運算

e.g.:

X(1,3)=C(4,5)+V(9,1)

Example:

(assignamatrix)(>

後面為自行輸入的部分)

A=[1234;

5678;

90-1-2]

A=

1234

5678

90-1-2

v=[13];

b=A(v,2)

b=

2

0

c=A(v,:

c=

d=zeros

(2);

%產生22的零矩陣,注意MATLAB用%表示後面是註解

d(:

1)=A(v,2)

d=

20

00

e=A(2:

3,3:

4)

e=

78

-1-2

♦reshape函數:

把mn的矩陣轉換成cd的矩陣(注意:

mn=cd)

做法:

將每個column裡原先的值依序放入至填滿

p=

2345

3579

-2-3-4-5

reshape(p,6,2)

ans=%沒有定義output變數時,用ans表示

24

37

-2-4

35

59

-3-5

 

1.6TransposingMatrices

※符號:

“'

”表示complexconjugatetranspose(共軛及轉置)

“.'

”表示transposewithoutconjugation

a=[1+2i3+5i;

4+2i3+4i]

a=

1+2i3+5i

4+2i3+4i

b=a'

b=

1-2i4-2i

3-5i3-4i

c=a.'

1+2i4+2i

3+5i3+4i

1.7SpecialMatrices

ones(m,n):

mn的全為1的矩陣(當矩陣size是nn時,可簡寫成ones(n))

zeros(m,n):

mn的全為0的矩陣

rand(m,n):

mn的亂數矩陣(數值為[0,1]間的均勻分佈)

randn(m,n):

mn的亂數矩陣(數值為N(0,1)之常態分佈)

eye(n):

nn的identitymatrix,即對角線上都是1,其餘都是0的方陣

B=zeros(size(A)):

B是跟矩陣A之size相同的零矩陣

1.8GeneratingMatriceswithSpecifiedElementValues

※產生連續數字

x=-10:

1:

10(起始值-10,間距為1,最末值10)

表示要產生一個rowvector:

[-10-9-8…01…910]

y=-2:

.2:

[-2-1.8-1.6…1.82]

z=[1:

34:

2:

810:

12]

z=

123468101112

※由一個矩陣產生更複雜的矩陣

C=[2.34.9;

0.93.1];

D=[Cones(size(C));

eye(size(C))zeros(size(C))]

D=

2.34.911

0.93.111

1000

0100

1.9SomeSpecialMatrixOperations

A^p:

矩陣A的p次方

D=sqrtm(A):

A=D2

sqrt(A):

矩陣A的每個元素都開根號

expm(A):

Ae

a=[12;

34]

a=

12

34

t=sqrtm(a)

t=

0.5537+0.4644i0.8070-0.2124i

1.2104-0.3186i1.7641+0.1458i

t^2%t^2=a

ans=

1.0000+0.0000i2.0000+0.0000i

3.0000+0.0000i4.0000+0.0000i

t1=sqrt(a)

t1=

1.00001.4142

1.73212.0000

1.10Element-by-ElementOperations(兩個矩陣間元素對元素的運算)

做法:

在運算元之前加一個“.”,如:

x.^y,x.*y,x./y等

(沒有x.+y跟x.-y,因為矩陣的加減本來就是元素對元素的運算)

34];

b=[56;

78];

a*b

ans=

1922

4350

a.*b

512

2132

a.^b

164

218765536

a./b

ans=

0.20000.3333

0.42860.5000

b.\a%注意:

a./b=b.\a

1.11DataStructureinMATLAB

(1)characterarray(字元陣列)

※設定變數為字元或字串

x=abc

x=

abc

x

(2)%取出x字串裡的第二個字母

b

z=[xxyz]%將兩個字串連接起來

abcxyz

※字串可以排成array形式

sa=[exit;

oval;

rock]

sa=

exit

oval

rock

sa1=[maths;

physics;

history;

IT]

?

Allrowsinthebracketedexpressionmusthavethesamenumberofcolumns

(出現錯誤訊息,因column數目不同,即每個字串長度不同)

※若改用char函數,它會加入多餘的空白來克服上述問題

sa1=char(maths,physics,history,IT)

sa1=

maths

physics

history

IT

※取出上面stringarray中元素的方式跟matrix一樣

sa1(2,2)

h

sa1(4,4)

(空白位元,因char函數加了多餘空白之故)

(2)cellarray(細胞陣列或異質陣列):

將不同size或不同type的資料放在同一陣列之中,每份資料放在一個cell裡

a={maths;

IT}

maths

physics

history

IT

p=a

(2)%取出a的第二個component

p=

a(3:

cont=a{3}%取出a的第三個cell的內容

cont=

cont(4)%取出cont字串的第四個字元(因沒有符號,故可取出)

t

※一個cellarray也可以由cell函數產生

f=cell(2,2)%產生22的emptycellarray

f=

[][]

f{1,1}=2;

%assign第一個cell內的資料是數字2

f{1,2}='

test'

;

%assign第一列第二個cell內的資料是字串

f{2,1}=ones(3)%assign第二列第一個cell裡是一個33全為1的矩陣

f=

[2]'

[33double][]%double表示倍精確度,f的內容並未真正顯示

※Anequivalentwayofgeneratingf

f={[2]'

[ones(3)][]}

※f{2,1}的內容要詳細的顯示,要使用celldisp函數

celldisp(f)

f{1,1}=

f{2,1}=

111

111

f{1,2}=

test

f{2,2}=

[]

(3)structure(結構陣列):

一個structure是由數個field所組成,每個field可以是不同型態的資料,structure跟cellarray很像,主要差別在field有名字而cell沒有

建一個structure“StudentRecords”,其中包含三個field如下:

NameField,FeesField,SubjectField

我們先把學生資料放進3個cellarrays:

names,feesandsubjects

names={'

ABest'

'

DGood'

SGreen'

JJones'

}

names=

'

fees={333450200800}

fees=

[333][450][200][800]

subjects={'

cs'

maths'

eng'

}

subjects=

StudentRecords=struct('

NameField'

names,'

FeesField'

fees,'

SubjectField'

subjects)

StudentRecords=

14structarraywithfields:

NameField

FeesField

SubjectField

※若要取出第一個學生的資料:

StudentRecords

(1)

NameField:

FeesField:

333

SubjectField:

※若要取出第二個學生的SubjectField資料:

StudentRecords

(2).SubjectField

cs

※要更新資料:

StudentRecords(3).FeesField=1000;

%先不顯示,就算顯示也是如本頁紅字處

StudentRecords(3).FeesField

1000

※要新增第五個學生時,可直接設定:

StudentRecords(5).NameFiled='

TLee'

也可一筆一筆設定:

StudentRecords(5)=struct('

200,'

(4)其他:

MATLAB也提供其他的函數來轉換資料的型態:

cell2struct

struct2cell

num2cell

str2num

num2str:

doubleprecisionnumberstring

int2str

mat2str

full:

sparsematrixfullmatrix

sparse:

fullmatrixsparsematrix

double:

doubleprecision

1.12InputandOutputinMATLAB

※取消指令結尾的“;

”號即可顯示結果,但一般來說較亂,較沒有組織。

※用disp函數呈現較清楚的結果(文字及數字)

(1)顯示矩陣A:

disp(A)

(2)顯示字串,加單引號:

disp('

thiswilldisplaythistext'

(3)顯示字串組合,加中括號:

x=2.678;

disp(['

Valueofiterateis'

num2str(x),'

atthisstage'

])

Valueofiterateis2.678atthisstage

※用fprintf函數將結果依指定的格式輸出至螢幕或檔案,其形式為:

fprintf(‘filename’,‘formatstring’,list);

其中,filename的部分是optional,若省略則輸出至螢幕。

list的部分放的是變數的名稱,多個變數時要用逗號隔開。

formatstring的設定格式如下:

%P.Qe表示指數的格式

%P.Qf表示fixedpoint(定點格式)

%P.Qgbecomes%P.Qeor%P.Qfwhicheverisshorter

\n換行

上述符號中的P跟Q都是可以自行設定的整數,其中P是設定field寬度(含小數點),Q是設定小數後的位數。

x=1007.46;

y=2.1278;

k=17;

fprintf('

\nx=%8.2fy=%8.6fk=%2.0f\n'

x,y,k);

x=1007.46y=2.127800k=17

fprintf('

x=%3.1f'

x);

x=1007.5

※由鍵盤取得輸入的文數字之法:

輸入數字或矩陣:

a=input('

Pleaseinputthevalueofa:

輸入字串:

s'

讀入大量data的檔案:

loadfilename

1.13MATLABGraphics

MATLAB提供的繪圖功能可以用script呼叫或在commandwindow直接叫出

※plot函數:

plot(x,y):

用描點的方式繪出向量x對y的圖,若x跟y都是矩陣,則以columnbycolumn的方式畫出

則plot(x,y)會畫三條線(因有三個column)如下:

第一條通過:

(0,0),(1,1),(2,2),(3,3)

第二條通過:

(1,2),(2,4),(3,6),(4,8)

第三條通過:

(2,6),(3,9),(4,12),(5,15)

plot(x1,y1,‘type1’,x2,y2,‘type2’):

以type1的形式畫第一對向量(x1,y1),以type2的形式畫第二對向量(x2,y2)

※plot函數裡可使用的type:

Lines

Symbol

Points

Color

Character

solid

-

point

.

yellow

y

dashed

--

plus

+

red

r

dotted

:

star

*

green

g

dashdot

-.

circle

o

blue

xmark

x

black

k

(ch1_plot.m,Anexampleofplotfunction)

x=0:

0.5:

4*pi;

%在0到4π間每隔0.5取一點

y=sin(x);

plot(x,y,'

g:

*'

)%綠色,點線,mark為*(type的順序沒有影響)

※整理:

(MATLAB基本二維繪圖指令)

plot:

x軸跟y軸都是線性刻度

loglog:

x軸跟y軸都是對數刻度

semilogx:

x軸為對數刻度,y軸是線性刻度

semilogy:

x軸是線性刻度,y軸為對數刻度

plotyy:

畫出兩個不同刻度的y軸

(ch1_plotyy.m,Anexampleofplotyyfunction)

x=linspace(0,2*pi);

%在0到2π間,等分取100個點

y1=sin(x);

y2=exp(-x);

plotyy(x,y1,x,y2)%針對y1及y2兩線,畫出兩個不同刻度的y軸

(左邊是y1的,右邊是y2的)

※修改圖軸標題、格線、軸界及其他設定等:

title('

title'

):

在圖形上方顯示標題

xlabel('

x_axis_name'

顯示x軸名稱

ylabel('

y_axis_name'

顯示y軸名稱

gridon/off:

畫出或取消圖形上的格線

text(x,y,‘text-at-x,y’):

在圖形中的(x,y)位置顯示文字

gtext(‘text’):

使用滑鼠決定文字位置

axis([xmin,xmax,ymin,ymax]):

指定x軸及y軸的上下限

holdon/off:

將holdon之後出現的圖形放在同一個figure視窗裡(off則取消)

ginput:

將游標點下的(x,y)座標資訊取出([x,y]=ginput可取多點,按Enter結束,[x,y]=ginput(n)可取恰好n點)

clf函數:

將視窗內的圖形清除

注意:

上述指令需出現在plot函數之後

(ch1_1.m)

%figure1.13.1.Superimposedgraphsobtainedusingplot(x,y)andholdstatements.

x=-4:

0.05:

4;

y=exp(-0.5*x).*sin(5*x);

figure

(1);

plot(x,y,'

r'

);

%thegraphappearsinFigureNo.1

x-axis'

ylabel('

y-axis'

holdon;

%將之後出現的圖放在同一個視窗裡

y=exp(-0.5*x).*cos(5*x);

plot(x,y);

grid;

gtext('

Twotails...'

%"

grid"

and"

gridon"

isthesame

[x,y]=ginput%getinformationfromgraphs

holdoff

※fplot函數:

給定函數及函數的x軸範圍,由fplot自己選擇適當的x點來畫圖,故比plot函數畫出的逼真。

例:

函數為

存成f101.m檔如下:

functionv=f101(x)

v=sin(x.^3);

ch1_2.m檔:

%figure1.13.2.Plotofy=sin(x^3)using75equispacedplottingpoints.

%figure1.13.3.Plotofy=sin(x^3)usingthefunctionfplot.

x=2:

.04:

y=f101(x);

%callthefunctionf101

x'

y'

figure

(2);

%將後面出現的圖放在figureNo.2視窗裡

fplot('

f101'

[24]);

※subplot函數:

可將視窗做分割

用法:

subplot(p,q,r):

視窗分割成pq個,將圖形畫在第r個小視窗裡。

將視窗切成23個小視窗

(ch1_3.m,figure1.13.4.Exampleoftheuseofsubplot)

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 职业教育 > 中职中专

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1