0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

MATLAB—幫你快速入門MATLAB(基礎(chǔ)知識(shí)篇)

新機(jī)器視覺 ? 來源:新機(jī)器視覺 ? 2023-11-25 14:37 ? 次閱讀

1.MATLAB的基本知識(shí)

1-1

基本運(yùn)算與函數(shù)

在MATLAB下進(jìn)行基本數(shù)學(xué)運(yùn)算,只需將運(yùn)算式直接打入提示號(hào)(>>)之後,并按入Enter鍵即可。例如:

>> (5*2+1.3-0.8)*10/25

ans =4.2000

MATLAB會(huì)將運(yùn)算結(jié)果直接存入一變數(shù)ans,代表MATLAB運(yùn)算後的答案(Answer)并顯示其數(shù)值於螢?zāi)簧稀?/p>

小提示:">>"是MATLAB的提示符號(hào)(Prompt),但在PC中文視窗系統(tǒng)下,由於編碼方式不同,此提示符號(hào)常會(huì)消失不見,但這并不會(huì)影響到MATLAB的運(yùn)算結(jié)果。

我們也可將上述運(yùn)算式的結(jié)果設(shè)定給另一個(gè)變數(shù)x:

x = (5*2+1.3-0.8)*10^2/25

x = 42

此時(shí)MATLAB會(huì)直接顯示x的值。由上例可知,MATLAB認(rèn)識(shí)所有一般常用到的加(+)、減(-)、乘(*)、除(/)的數(shù)學(xué)運(yùn)算符號(hào),以及冪次運(yùn)算(^)。

小提示:MATLAB將所有變數(shù)均存成double的形式,所以不需經(jīng)過變數(shù)宣告(Variabledeclaration)。MATLAB同時(shí)也會(huì)自動(dòng)進(jìn)行記憶體的使用和回收,而不必像C語言,必須由使用者一一指定.這些功能使的MATLAB易學(xué)易用,使用者可專心致力於撰寫程式,而不必被軟體枝節(jié)問題所干擾。

若不想讓MATLAB每次都顯示運(yùn)算結(jié)果,只需在運(yùn)算式最後加上分號(hào)(;)即可,如下例:

y = sin(10)*exp(-0.3*4^2);

若要顯示變數(shù)y的值,直接鍵入y即可:

>>y

y =-0.0045

在上例中,sin是正弦函數(shù),exp是指數(shù)函數(shù),這些都是MATLAB常用到的數(shù)學(xué)函數(shù)。

下表即為MATLAB常用的基本數(shù)學(xué)函數(shù)及三角函數(shù)

小整理:MATLAB常用的基本數(shù)學(xué)函數(shù)

abs(x):純量的絕對(duì)值或向量的長度

angle(z):復(fù) 數(shù)z的相角(Phase angle)

sqrt(x):開平方

real(z):復(fù)數(shù)z的實(shí)部

imag(z):復(fù)數(shù)z的虛 部

conj(z):復(fù)數(shù)z的共軛復(fù)數(shù)

round(x):四舍五入至最近整數(shù)

fix(x):無論正負(fù),舍去小數(shù)至最近整數(shù)

floor(x):地板函數(shù),即舍去正小數(shù)至最近整數(shù)

ceil(x):天花板函數(shù),即加入正小數(shù)至最近整數(shù)

rat(x):將實(shí)數(shù)x化為分?jǐn)?shù)表示

rats(x):將實(shí)數(shù)x化為多項(xiàng)分?jǐn)?shù)展開

sign(x):符號(hào)函數(shù) (Signum function)。

當(dāng)x<0時(shí),sign(x)=-1;?

當(dāng)x=0時(shí),sign(x)=0;

當(dāng)x>0時(shí),sign(x)=1。

> 小整理:MATLAB常用的三角函數(shù)

sin(x):正弦函數(shù)

cos(x):馀弦函數(shù)

tan(x):正切函數(shù)

asin(x):反正弦函數(shù)

acos(x):反馀弦函數(shù)

atan(x):反正切函數(shù)

atan2(x,y):四象限的反正切函數(shù)

sinh(x):超越正弦函數(shù)

cosh(x):超越馀弦函數(shù)

tanh(x):超越正切函數(shù)

asinh(x):反超越正弦函數(shù)

acosh(x):反超越馀弦函數(shù)

atanh(x):反超越正切函數(shù)

變數(shù)也可用來存放向量或矩陣,并進(jìn)行各種運(yùn)算,如下例的列向量(Row vector)運(yùn)算:

x = [1 3 5 2];

y = 2*x+1

y = 3 7 11 5

小提示:變數(shù)命名的規(guī)則

1.第一個(gè)字母必須是英文字母 2.字母間不可留空格 3.最多只能有19個(gè)字母,MATLAB會(huì)忽略多馀字母

我們可以隨意更改、增加或刪除向量的元素:

y(3) = 2 % 更改第三個(gè)元素

y =3 7 2 5

y(6) = 10 % 加入第六個(gè)元素

y = 3 7 2 5 0 10

y(4) = [] % 刪除第四個(gè)元素,

y = 3 7 2 0 10

在上例中,MATLAB會(huì)忽略所有在百分比符號(hào)(%)之後的文字,因此百分比之後的文字均可視為程式的注解(Comments)。MATLAB亦可取出向量的一個(gè)元素或一部份來做運(yùn)算:

x(2)*3+y(4) % 取出x的第二個(gè)元素和y的第四個(gè)元素來做運(yùn)算

ans = 9

y(2:4)-1 % 取出y的第二至第四個(gè)元素來做運(yùn)算

ans = 6 1 -1

在上例中,2:4代表一個(gè)由2、3、4組成的向量

若對(duì)MATLAB函數(shù)用法有疑問,可隨時(shí)使用help來尋求線上支援(on-line help):helplinspace

小整理:MATLAB的查詢命令

help:用來查詢已知命令的用法。例如已知inv是用來計(jì)算反矩陣,鍵入help inv即可得知有關(guān)inv命令的用法。(鍵入help help則顯示help的用法,請(qǐng)?jiān)嚳纯矗。?lookfor:用來尋找未知的命令。例如要尋找計(jì)算反矩陣的命令,可鍵入 lookfor inverse,MATLAB即會(huì)列出所有和關(guān)鍵字inverse相關(guān)的指令。找到所需的命令後 ,即可用help進(jìn)一步找出其用法。(lookfor事實(shí)上是對(duì)所有在搜尋路徑下的M檔案進(jìn)行關(guān)鍵字對(duì)第一注解行的比對(duì),詳見後敘。)

將行向量轉(zhuǎn)置(Transpose)後,即可得到列向量(Column vector):

z = x'

z = 4.0000

5.2000

6.4000

7.6000

8.8000

10.0000

不論是行向量或列向量,我們均可用相同的函數(shù)找出其元素個(gè)數(shù)、最大值、最小值等:

length(z) % z的元素個(gè)數(shù)

ans = 6

max(z) % z的最大值

ans = 10

min(z) % z的最小值

ans = 4

小整理:適用於向量的常用函數(shù)有:

min(x): 向量x的元素的最小值

max(x): 向量x的元素的最大值

mean(x): 向量x的元素的平均值

median(x): 向量x的元素的中位數(shù)

std(x): 向量x的元素的標(biāo)準(zhǔn)差

diff(x): 向量x的相鄰元素的差

sort(x): 對(duì)向量x的元素進(jìn)行排序(Sorting)

length(x): 向量x的元素個(gè)數(shù)

norm(x): 向量x的歐氏(Euclidean)長度

sum(x): 向量x的元素總和

prod(x): 向量x的元素總乘積

cumsum(x): 向量x的累計(jì)元素總和

cumprod(x): 向量x的累計(jì)元素總乘積

dot(x, y): 向量x和y的內(nèi) 積

cross(x, y): 向量x和y的外積 (大部份的向量函數(shù)也可適用於矩陣,詳見下述。)

若要輸入矩陣,則必須在每一列結(jié)尾加上分號(hào)(;),如下例:

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

A =

1 2 3 4

5 6 7 8

9 10 11 12

同樣地,我們可以對(duì)矩陣進(jìn)行各種處理:

A(2,3) = 5 % 改變位於第二列,第三行的元素值

A =

1 2 3 4

5 6 5 8

9 10 11 12

B = A(2,1:3) % 取出部份矩陣B

B = 5 6 5

A = [A B'] % 將B轉(zhuǎn)置後以列向量并入A

A =

1 2 3 4 5

5 6 5 8 6

9 10 11 12 5

A(:, 2) = [] % 刪除第二行(:代表所有列)

A =

1 3 4 5

5 5 8 6

9 11 12 5

A = [A; 4 3 2 1] % 加入第四列

A =

1 3 4 5

5 5 8 6

9 11 12 5

4 3 2 1

A([1 4], :) = [] % 刪除第一和第四列(:代表所有行)

A =

5 5 8 6

9 11 12 5

這幾種矩陣處理的方式可以相互疊代運(yùn)用,產(chǎn)生各種意想不到的效果,就看各位的巧思和創(chuàng)意

小提示:在MATLAB的內(nèi)部資料結(jié)構(gòu)中,每一個(gè)矩陣都是一個(gè)以行為主(Column-oriented )的陣列(Array)因此對(duì)於矩陣元素的存取,我們可用一維或二維的索引(Index)來定址。舉例來說,在上述矩陣A中,位於第二列、第三行的元素可寫為A(2,3) (二維索引)或A(6)(一維索引,即將所有直行進(jìn)行堆疊後的第六個(gè)元素)。

此外,若要重新安排矩陣的形狀,可用reshape命令:

B = reshape(A, 4, 2) % 4是新矩陣的行數(shù),2是新矩陣的列數(shù)

B =

5 8

9 12

5 6

11 5

小提示:A(:)就是將矩陣A每一行堆疊起來,成為一個(gè)列向量,而這也是MATLAB變數(shù)的內(nèi)部儲(chǔ)存方式。以前例而言,reshape(A, 8, 1)和A(:)同樣都會(huì)產(chǎn)生一個(gè)8x1的矩陣。

MATLAB可在同時(shí)執(zhí)行數(shù)個(gè)命令,只要以逗號(hào)或分號(hào)將命令隔開:

x = sin(pi/3); y = x^2; z = y*10,

z =

7.5000

若一個(gè)數(shù)學(xué)運(yùn)算是太長,可用三個(gè)句點(diǎn)將其延伸到下一行:

z = 10*sin(pi/3)* ...

sin(pi/3);

若要檢視現(xiàn)存於工作空間(Workspace)的變數(shù),可鍵入who:

who

Your variables are:

testfile x

這些是由使用者定義的變數(shù)。若要知道這些變數(shù)的詳細(xì)資料,可鍵入:

whos

Name Size Bytes Class

A 2x4 64 double array

B 4x2 64 double array

ans 1x1 8 double array

x 1x1 8 double array

y 1x1 8 double array

z 1x1 8 double array

Grand total is 20 elements using 160 bytes

使用clear可以刪除工作空間的變數(shù):

clear A

A

??? Undefined function or variable 'A'.

另外MATLAB有些永久常數(shù)(Permanent constants),雖然在工作空間中看不 到,但使用者可直接取用,例如:

pi

ans = 3.1416

下表即為MATLAB常用到的永久常數(shù)。

小整理:MATLAB的永久常數(shù) i或j:基本虛數(shù)單位

eps:系統(tǒng)的浮點(diǎn)(Floating-point)精確度

inf:無限大, 例如1/0 nan或NaN:非數(shù)值(Not a number) ,例如0/0

pi:圓周率 p(= 3.1415926...)

realmax:系統(tǒng)所能表示的最大數(shù)值

realmin:系統(tǒng)所能表示的最小數(shù)值

nargin: 函數(shù)的輸入引數(shù)個(gè)數(shù)

nargin: 函數(shù)的輸出引數(shù)個(gè)數(shù)

1-2

重復(fù)命令

最簡(jiǎn)單的重復(fù)命令是for圈(for-loop),其基本形式為:

for 變數(shù) = 矩陣;

運(yùn)算式;

end

其中變數(shù)的值會(huì)被依次設(shè)定為矩陣的每一行,來執(zhí)行介於for和end之間的運(yùn)算式。因此,若無意外情況,運(yùn)算式執(zhí)行的次數(shù)會(huì)等於矩陣的行數(shù)。

舉例來說,下列命令會(huì)產(chǎn)生一個(gè)長度為6的調(diào)和數(shù)列(Harmonic sequence):

x = zeros(1,6); % x是一個(gè)16的零矩陣

for i = 1:6,

x(i) = 1/i;

end

在上例中,矩陣x最初是一個(gè)16的零矩陣,在for圈中,變數(shù)i的值依次是1到6,因此矩陣x的第i個(gè)元素的值依次被設(shè)為1/i。我們可用分?jǐn)?shù)來顯示此數(shù)列:

format rat % 使用分?jǐn)?shù)來表示數(shù)值

disp(x)

1 1/2 1/3 1/4 1/5 1/6

for圈可以是多層的,下例產(chǎn)生一個(gè)16的Hilbert矩陣h,其中為於第i列、第j行的元素為

h = zeros(6);

for i = 1:6,

for j = 1:6,

h(i,j) = 1/(i+j-1);

end

end

disp(h)

1 1/2 1/3 1/4 1/5 1/6

1/2 1/3 1/4 1/5 1/6 1/7

1/3 1/4 1/5 1/6 1/7 1/8

1/4 1/5 1/6 1/7 1/8 1/9

1/5 1/6 1/7 1/8 1/9 1/10

1/6 1/7 1/8 1/9 1/10 1/11

小提示:預(yù)先配置矩陣 在上面的例子,我們使用zeros來預(yù)先配置(Allocate)了一個(gè)適當(dāng)大小的矩陣。若不預(yù)先配置矩陣,程式仍可執(zhí)行,但此時(shí)MATLAB需要?jiǎng)討B(tài)地增加(或減?。┚仃嚨拇笮。蚨档统淌降膱?zhí)行效率。所以在使用一個(gè)矩陣時(shí),若能在事前知道其大小,則最好先使用zeros或ones等命令來預(yù)先配置所需的記憶體(即矩陣)大小。

在下例中,for圈列出先前產(chǎn)生的Hilbert矩陣的每一行的平方和:

for i = h,

disp(norm(i)^2); % 印出每一行的平方和

end

1299/871

282/551

650/2343

524/2933

559/4431

831/8801

在上例中,每一次i的值就是矩陣h的一行,所以寫出來的命令特別簡(jiǎn)潔。

令一個(gè)常用到的重復(fù)命令是while圈,其基本形式為:

while 條件式;

運(yùn)算式;

end

也就是說,只要條件示成立,運(yùn)算式就會(huì)一再被執(zhí)行。例如先前產(chǎn)生調(diào)和數(shù)列的例子,我們可用while圈改寫如下:

x = zeros(1,6); % x是一個(gè)16的零矩陣

i = 1;

while i <= 6, ?

x(i) = 1/i;

i = i+1;

end

format short

1-3

邏輯命令

最簡(jiǎn)單的邏輯命令是if, ..., end,其基本形式為:

if 條件式;

運(yùn)算式;

end

if rand(1,1) > 0.5,

disp('Given random number is greater than 0.5.');

end

Given random number is greater than 0.5.

1-4

集合多個(gè)命令於一個(gè)M檔案

若要一次執(zhí)行大量的MATLAB命令,可將這些命令存放於一個(gè)副檔名為m的檔案,并在 MATLAB提示號(hào)下鍵入此檔案的主檔名即可。此種包含MATLAB命令的檔案都以m為副檔名,因此通稱M檔案(M-files)。例如一個(gè)名為test.m的M檔案,包含一連串的MATLAB命令,那麼只要直接鍵入test,即可執(zhí)行其所包含的命令:

pwd % 顯示現(xiàn)在的目錄

ans =

D:MATLAB5in

cd c:datamlbook % 進(jìn)入test.m所在的目錄

type test.m % 顯示test.m的內(nèi)容

% This is my first test M-file.

% Roger Jang, March 3, 1997

fprintf('Start of test.m! ');

for i = 1:3,

fprintf('i = %d ---> i^3 = %d ', i, i^3);

end

fprintf('End of test.m! ');

test % 執(zhí)行test.m

Start of test.m!

i = 1 ---> i^3 = 1

i = 2 ---> i^3 = 8

i = 3 ---> i^3 = 27

End of test.m!

小提示:第一注解行(H1 help line) test.m的前兩行是注解,可以使程式易於了解與管理。特別要說明的是,第一注解行通常用來簡(jiǎn)短說明此M檔案的功能,以便lookfor能以關(guān)鍵字比對(duì)的方式來找出此M檔案。舉例來說,test.m的第一注解行包含test這個(gè)字,因此如果鍵入lookfor test,MATLAB即可列出所有在第一注解行包含test的M檔案,因而test.m也會(huì)被列名在內(nèi)。

嚴(yán)格來說,M檔案可再細(xì)分為命令集(Scripts)及函數(shù)(Functions)。前述的test.m即為命令集,其效用和將命令逐一輸入完全一樣,因此若在命令集可以直接使用工作空間的變數(shù),而且在命令集中設(shè)定的變數(shù),也都在工作空間中看得到。函數(shù)則需要用到輸入引數(shù)(Input arguments)和輸出引數(shù)(Output arguments)來傳遞資訊,這就像是C語言的函數(shù),或是FORTRAN語言的副程序(Subroutines)。舉例來說,若要計(jì)算一個(gè)正整數(shù)的階乘 (Factorial),我們可以寫一個(gè)如下的MATLAB函數(shù)并將之存檔於fact.m:

function output = fact(n)

% FACT Calculate factorial of a given positive integer.

output = 1;

for i = 1:n,

output = output*i;

end

其中fact是函數(shù)名,n是輸入引數(shù),output是輸出引數(shù),而i則是此函數(shù)用到的暫時(shí)變數(shù)。要使用此函數(shù),直接鍵入函數(shù)名及適當(dāng)輸入引數(shù)值即可:

y = fact(5)

y = 120

(當(dāng)然,在執(zhí)行fact之前,你必須先進(jìn)入fact.m所在的目錄。)在執(zhí)行fact(5)時(shí),

MATLAB會(huì)跳入一個(gè)下層的暫時(shí)工作空間(Temperary workspace),將變數(shù)n的值設(shè)定為5,然後進(jìn)行各項(xiàng)函數(shù)的內(nèi)部運(yùn)算,所有內(nèi)部運(yùn)算所產(chǎn)生的變數(shù)(包含輸入引數(shù)n、暫時(shí)變數(shù)i,以及輸出引數(shù)output)都存在此暫時(shí)工作空間中。運(yùn)算完畢後,MATLAB會(huì)將最後輸出引數(shù)output的值設(shè)定給上層的變數(shù)y,并將清除此暫時(shí)工作空間及其所含的所有變數(shù)。換句話說,在呼叫函數(shù)時(shí),你只能經(jīng)由輸入引數(shù)來控制函數(shù)的輸入,經(jīng)由輸出引數(shù)來得到函數(shù)的輸出,但所有的暫時(shí)變數(shù)都會(huì)隨著函數(shù)的結(jié)束而消失,你并無法得到它們的值。

小提示:有關(guān)階乘函數(shù) 前面(及後面)用到的階乘函數(shù)只是純粹用來說明MATLAB的函數(shù)觀念。若實(shí)際要計(jì)算一個(gè)正整數(shù)n的階乘(即n!)時(shí),可直接寫成prod(1:n),或是直接呼叫g(shù)amma函數(shù):gamma(n-1)。

MATLAB的函數(shù)也可以是遞式的(Recursive),也就是說,一個(gè)函數(shù)可以呼叫它本身。

舉例來說,n! = n*(n-1)!,因此前面的階乘函數(shù)可以改成遞式的寫法:

function output = fact(n)

% FACT Calculate factorial of a given positive integerrecursively.

if n == 1, % Terminating condition

output = 1;

return;

end

output = n*fact(n-1);

在寫一個(gè)遞函數(shù)時(shí),一定要包含結(jié)束條件(Terminating condition),否則此函數(shù)將會(huì)一再呼叫自己,永遠(yuǎn)不會(huì)停止,直到電腦的記憶體被耗盡為止。以上例而言,n==1即滿足結(jié)束條件,此時(shí)我們直接將output設(shè)為1,而不再呼叫此函數(shù)本身。

1-5

1-5、搜尋路徑

在前一節(jié)中,test.m所在的目錄是d:mlbook。如果不先進(jìn)入這個(gè)目錄,MATLAB就找不到你要執(zhí)行的M檔案。如果希望MATLAB不論在何處都能執(zhí)行test.m,那麼就必須將d:mlbook加入MATLAB的搜尋路徑(Search path)上。要檢視MATLAB的搜尋路徑,鍵入path即可:

path

MATLABPATH

d:matlab5 oolboxmatlabgeneral

d:matlab5 oolboxmatlabops

d:matlab5 oolboxmatlablang

d:matlab5 oolboxmatlabelmat

d:matlab5 oolboxmatlabelfun

d:matlab5 oolboxmatlabspecfun

d:matlab5 oolboxmatlabmatfun

d:matlab5 oolboxmatlabdatafun

d:matlab5 oolboxmatlabpolyfun

d:matlab5 oolboxmatlabfunfun

d:matlab5 oolboxmatlabsparfun

d:matlab5 oolboxmatlabgraph2d

d:matlab5 oolboxmatlabgraph3d

d:matlab5 oolboxmatlabspecgraph

d:matlab5 oolboxmatlabgraphics

d:matlab5 oolboxmatlabuitools

d:matlab5 oolboxmatlabstrfun

d:matlab5 oolboxmatlabiofun

d:matlab5 oolboxmatlab imefun

d:matlab5 oolboxmatlabdatatypes

d:matlab5 oolboxmatlabdde

d:matlab5 oolboxmatlabdemos

d:matlab5 oolbox our

d:matlab5 oolboxsimulinksimulink

d:matlab5 oolboxsimulinklocks

d:matlab5 oolboxsimulinksimdemos

d:matlab5 oolboxsimulinkdee

d:matlab5 oolboxlocal

此搜尋路徑會(huì)依已安裝的工具箱(Toolboxes)不同而有所不同。要查詢某一命令是在搜尋路徑的何處,可用which命令:

which expo

d:matlab5 oolboxmatlabdemosexpo.m

很顯然c:datamlbook并不在MATLAB的搜尋路徑中,因此MATLAB找不到test.m這個(gè)M檔案:

which test

c:datamlbook est.m

要將d:mlbook加入MATLAB的搜尋路徑,還是使用path命令:

path(path, 'c:datamlbook');

此時(shí)d:mlbook已加入MATLAB搜尋路徑(鍵入path試看看),因此MATLAB已經(jīng)"看"得到

test.m:

which test

c:datamlbook est.m

現(xiàn)在我們就可以直接鍵入test,而不必先進(jìn)入test.m所在的目錄。

小提示:如何在其啟動(dòng)MATLAB時(shí),自動(dòng)設(shè)定所需的搜尋路徑?如果在每一次啟動(dòng)MATLAB後都要設(shè)定所需的搜尋路徑,將是一件很麻煩的事。有兩種方法,可以使MATLAB啟動(dòng)後 ,即可載入使用者定義的搜尋路徑:

1.MATLAB的預(yù)設(shè)搜尋路徑是定義在matlabrc.m(在c:matlab之下,或是其他安裝MATLAB 的主目錄下),MATLAB每次啟動(dòng)後,即自動(dòng)執(zhí)行此檔案。因此你可以直接修改matlabrc.m ,以加入新的目錄於搜尋路徑之中。

2.MATLAB在執(zhí)行matlabrc.m時(shí),同時(shí)也會(huì)在預(yù)設(shè)搜尋路徑中尋找startup.m,若此檔案存在,則執(zhí)行其所含的命令。因此我們可將所有在MATLAB啟動(dòng)時(shí)必須執(zhí)行的命令(包含更改搜尋路徑的命令),放在此檔案中。

每次MATLAB遇到一個(gè)命令(例如test)時(shí),其處置程序?yàn)椋?/p>

1.將test視為使用者定義的變數(shù)。

2.若test不是使用者定義的變數(shù),將其視為永久常數(shù) 。

3.若test不是永久常數(shù),檢查其是否為目前工作目錄下的M檔案。

4.若不是,則由搜尋路徑尋找是否有test.m的檔案。

5.若在搜尋路徑中找不到,則MATLAB會(huì)發(fā)出嗶嗶聲并印出錯(cuò)誤訊息。

以下介紹與MATLAB搜尋路徑相關(guān)的各項(xiàng)命令。

1-6

資料的儲(chǔ)存與載入

有些計(jì)算曠日廢時(shí),那麼我們通常希望能將計(jì)算所得的儲(chǔ)存在檔案中,以便將來可進(jìn)行其他處理。MATLAB儲(chǔ)存變數(shù)的基本命令是save,在不加任何選項(xiàng)(Options)時(shí),save會(huì)將變數(shù)以二進(jìn)制(Binary)的方式儲(chǔ)存至副檔名為mat的檔案,如下述:

save:將工作空間的所有變數(shù)儲(chǔ)存到名為matlab.mat的二進(jìn)制檔案。

save filename:將工作空間的所有變數(shù)儲(chǔ)存到名為filename.mat的二進(jìn)制檔案。save filename x y z :將變數(shù)x、y、z儲(chǔ)存到名為filename.mat的二進(jìn)制檔案。

以下為使用save命令的一個(gè)簡(jiǎn)例:

who % 列出工作空間的變數(shù)

Your variables are:

B h j y

ans i x z

save test B y % 將變數(shù)B與y儲(chǔ)存至test.mat

dir % 列出現(xiàn)在目錄中的檔案

. 2plotxy.doc fact.m simulink.doc test.m ~$1basic.doc

.. 3plotxyz.doc first.doc temp.doc test.mat

1basic.doc book.dot Go.m template.doc testfile.dat

delete test.mat % 刪除test.mat

以二進(jìn)制的方式儲(chǔ)存變數(shù),通常檔案會(huì)比較小,而且在載入時(shí)速度較快,但是就無法用普通的文書軟體(例如pe2或記事本)看到檔案內(nèi)容。若想看到檔案內(nèi)容,則必須加上-ascii選項(xiàng),詳見下述:

save filename x -ascii:將變數(shù)x以八位數(shù)存到名為filename的ASCII檔案。

Save filename x -ascii -double:將變數(shù)x以十六位數(shù)存到名為filename的ASCII檔案。

另一個(gè)選項(xiàng)是-tab,可將同一列相鄰的數(shù)目以定位鍵(Tab)隔開。

小提示:二進(jìn)制和ASCII檔案的比較 在save命令使用-ascii選項(xiàng)後,會(huì)有下列現(xiàn)象:save命令就不會(huì)在檔案名稱後加上mat的副檔名。

因此以副檔名mat結(jié)尾的檔案通常是MATLAB的二進(jìn)位資料檔。

若非有特殊需要,我們應(yīng)該盡量以二進(jìn)制方式儲(chǔ)存資料。

load命令可將檔案載入以取得儲(chǔ)存之變數(shù):

load filename:load會(huì)尋找名稱為filename.mat的檔案,并以二進(jìn)制格式載入。若找不到filename.mat,則尋找名稱為filename的檔案,并以ASCII格式載入。load filename-ascii:load會(huì)尋找名稱為filename的檔案,并以ASCII格式載入。

若以ASCII格式載入,則變數(shù)名稱即為檔案名稱(但不包含副檔名)。若以二進(jìn)制載入,則可保留原有的變數(shù)名稱,如下例:

clear all; % 清除工作空間中的變數(shù)

x = 1:10;

save testfile.dat x -ascii % 將x以ASCII格式存至名為testfile.dat的檔案

load testfile.dat % 載入testfile.dat

who % 列出工作空間中的變數(shù)

Your variables are:

testfile x

注意在上述過程中,由於是以ASCII格式儲(chǔ)存與載入,所以產(chǎn)生了一個(gè)與檔案名稱相同的變數(shù)testfile,此變數(shù)的值和原變數(shù)x完全相同。

1-7

結(jié)束MATLAB

有三種方法可以結(jié)束MATLAB:

1.鍵入exit

2.鍵入quit

3.直接關(guān)閉MATLAB的命令視窗(Command window)

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • matlab
    +關(guān)注

    關(guān)注

    179

    文章

    2947

    瀏覽量

    229538
  • C語言
    +關(guān)注

    關(guān)注

    180

    文章

    7575

    瀏覽量

    134483
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4240

    瀏覽量

    62013

原文標(biāo)題:MATLAB—幫你快速入門MATLAB(基礎(chǔ)知識(shí)篇)

文章出處:【微信號(hào):vision263com,微信公眾號(hào):新機(jī)器視覺】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    MATLAB入門教程之MATLAB的基本知識(shí)

    MATLAB入門教程之MATLAB的基本知識(shí)
    發(fā)表于 02-18 16:54 ?1.1w次閱讀

    好書分享!《詳解MATLAB快速入門與應(yīng)用》

    《詳解MATLAB快速入門與應(yīng)用》很好的書!很實(shí)用!
    發(fā)表于 05-29 16:06

    MatLab基礎(chǔ)知識(shí)介紹

    MatLab學(xué)習(xí)筆記(一)綱要:界面介紹幫助系統(tǒng)基礎(chǔ)知識(shí)基本數(shù)據(jù)類型一.界面介紹 (基于 MATLAB R2018a)  MATLAB的工作界面形式簡(jiǎn)潔,主要由標(biāo)題欄、功能區(qū)、工具欄、
    發(fā)表于 08-17 07:08

    matlab工程數(shù)學(xué)應(yīng)用pdf

    matlab工程數(shù)學(xué)應(yīng)用pdf 第1章 MatLab簡(jiǎn)介及使用指南第2章 MatLab基礎(chǔ)知識(shí)介紹第3章 MatLab符號(hào)運(yùn)算及數(shù)值運(yùn)算操
    發(fā)表于 06-13 13:26 ?181次下載

    matlab編程入門基礎(chǔ)與應(yīng)用

    matlab編程入門基礎(chǔ)與應(yīng)用第1章 MATLAB入門  1.1 MATLAB的簡(jiǎn)介及歷史   1.1.1 
    發(fā)表于 07-04 16:25 ?226次下載

    MATLAB基礎(chǔ)知識(shí)

    MATLAB基礎(chǔ)知識(shí):MATLAB是矩陣實(shí)驗(yàn)室(MATrix LABoratory)的縮寫。MATLAB以矩陣運(yùn)算為基礎(chǔ),把矩陣計(jì)算、可視化和程序設(shè)計(jì)融合到一個(gè)簡(jiǎn)單易用的交互式工作環(huán)境
    發(fā)表于 12-09 18:22 ?113次下載

    MATLAB教程_MATLAB仿真_MATLAB軟件下載

    本專題為你詳述MATLAB編程與MATLAB仿真設(shè)計(jì)知識(shí)。內(nèi)容包括MATLAB入門教程,MATLAB
    發(fā)表于 10-19 17:44
    <b class='flag-5'>MATLAB</b>教程_<b class='flag-5'>MATLAB</b>仿真_<b class='flag-5'>MATLAB</b>軟件下載

    matlab基礎(chǔ)知識(shí)簡(jiǎn)介

    介紹了matlab的變量,函數(shù),文件等基礎(chǔ)知識(shí)
    發(fā)表于 12-17 17:01 ?10次下載

    MATLAB基礎(chǔ)知識(shí)MATLAB的簡(jiǎn)介,編程環(huán)境和基本操作的詳細(xì)概述

    MATLAB基礎(chǔ)知識(shí)MATLAB的簡(jiǎn)介,編程環(huán)境和基本操作的詳細(xì)概述
    的頭像 發(fā)表于 06-02 10:18 ?7435次閱讀
    <b class='flag-5'>MATLAB</b><b class='flag-5'>基礎(chǔ)知識(shí)</b><b class='flag-5'>MATLAB</b>的簡(jiǎn)介,編程環(huán)境和基本操作的詳細(xì)概述

    MATLAB入門教程之MATLAB數(shù)值計(jì)算與圖形繪制基礎(chǔ)的詳細(xì)資料概述

    MATLAB入門教程之MATLAB數(shù)值計(jì)算與圖形繪制基礎(chǔ)的詳細(xì)資料概述講授MATLAB語言基礎(chǔ)入門知識(shí)
    發(fā)表于 10-31 08:00 ?0次下載
    <b class='flag-5'>MATLAB</b><b class='flag-5'>入門</b>教程之<b class='flag-5'>MATLAB</b>數(shù)值計(jì)算與圖形繪制基礎(chǔ)的詳細(xì)資料概述

    MATLAB教程之MATLAB語言的基礎(chǔ)知識(shí)入門

    本文檔的主要內(nèi)容詳細(xì)介紹的是MATLAB教程之MATLAB語言的基礎(chǔ)知識(shí)入門主要內(nèi)容包括了:1.MATLAB的發(fā)展歷程和影響,2.
    發(fā)表于 01-04 14:55 ?0次下載
    <b class='flag-5'>MATLAB</b>教程之<b class='flag-5'>MATLAB</b>語言的<b class='flag-5'>基礎(chǔ)知識(shí)</b>及<b class='flag-5'>入門</b>

    MATLAB學(xué)習(xí)入門教程之基礎(chǔ)知識(shí)的詳細(xì)資料說明

    講授MATLAB語言基礎(chǔ)入門知識(shí),介紹MATLAB產(chǎn)品的體系、MATLAB桌面工具的使用方法,重點(diǎn)介紹M
    發(fā)表于 04-28 08:00 ?6次下載
    <b class='flag-5'>MATLAB</b>學(xué)習(xí)<b class='flag-5'>入門</b>教程之<b class='flag-5'>基礎(chǔ)知識(shí)</b>的詳細(xì)資料說明

    精通MATLAB Simuli<x>nk系統(tǒng)仿真教程之MATLAB基礎(chǔ)知識(shí)免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是精通MATLAB Simulink系統(tǒng)仿真教程之MATLAB基礎(chǔ)知識(shí)免費(fèi)下載包括了:1.1 MATLAB簡(jiǎn)介,1.2
    發(fā)表于 10-08 08:00 ?0次下載

    MATLAB入門教程之MATLAB的基本知識(shí)介紹

    本文檔的主要內(nèi)容詳細(xì)介紹的是MATLAB入門教程之MATLAB的基本知識(shí)介紹包括了:MATLAB的目錄結(jié)構(gòu),
    發(fā)表于 10-30 14:29 ?37次下載

    Matlab入門教程及基礎(chǔ)知識(shí)

    全世界數(shù)以百萬計(jì)的工程師和科學(xué)家都在使用MATLAB分析和設(shè)計(jì)為我們的世界帶來巨變的系統(tǒng)和產(chǎn)品。MATLAB廣泛應(yīng)用于汽車主動(dòng)安全系統(tǒng)、星際宇宙飛船、健康監(jiān)控設(shè)備、智能電網(wǎng)和LTE蜂窩網(wǎng)絡(luò)。它用于機(jī)器學(xué)習(xí)、信號(hào)處理、圖像處理、計(jì)算機(jī)視覺、通信、計(jì)算金融、控制設(shè)計(jì)、機(jī)器人等
    發(fā)表于 03-29 14:58 ?3次下載