[MATLAB] matlab其實很簡單…

上學期修影像處理,這學期修多媒體概論,助教都是用matlab(雖然老師說可以用c拉)

相對於C,matlab長的很奇怪,但用久了之後也開始享受到它的便利性。

就如同某人說的"matlab是數學家寫的程式"

1.使用即宣告:再也不用先int a;  再a=1;,直接a=1就可以使用了,不用管資料型態。這對程式設計師而言是非常爛的效率,但數學家才不管他呢

2.變數型態只有一種:矩陣,單位元素可以是整數、正數、浮點數、字元,傳遞更方便。數學家說:世界上怎麼會有pointer?

.

3.如何宣告一個二維矩陣:

A=[1, 2, 3 ; 4, 5, 6; 7, 8, 9];,這樣就會產生一個3*3的矩陣

還可以簡化成A=[1 2 3; 4 5 6; 7 8 9];用空白格開即可

.

4.如何提出A=[1 2 3 2 1]的內容?

很抱歉,數學家認為矩陣是從"第一個"開始,所以我們要寫A(1:5),表示1*5的陣列

如果我們寫A(1:3),則會得到一個1*3的陣列

如果不知道有多少,則寫A(:)表示開始到結束

.

同理當B=[1 2 3 ; 4 5 6];

B(1,1)=1

第二列第三個元素:

B(2,3)=6

第二列1~3元素:

B(2,1:3) = 4 5 6

第二列全部元素:

B(2,:) = 4 5 6

矩陣全部元素:

B(:,:) =

1 2 3
4 5 6

.

5.再列出幾個常用的功能

A=[1 2 3];

B=[1 2 3 ; 4 5 6]

列加總:sum(A) = 6

最大值:max(A) = 3

其他的最小值min、平均mean都可以類推

開根號:sqrt(2) = 1.414….

二維的加總:sum(sum(B)),高維類推

.

矩陣運算

令A=[1 2; 3 4],B=[1 1; 2 2]

加法

A+B =

2 3

5 6

A*B是矩陣乘法,行乘以列

=5  5

11  11

.

如果要做純運算,改成

A .*B =

1  2

6  8

.

matlab可以用來處理字串:

C = ‘hello world’

如果想提出部分字元:

C(1:2) = ‘he’

所以如果想做出類似printf %c的效果:

a=12;

[‘variable a is’ , a]

只要用[ ]就可以宣告矩陣了

同樣的也可以用來合併矩陣、合併字串

A =[1 2]; B = [3 4]

[A B] = 1 2 3 4

這都是很有趣的設定

.

判斷式

if (…)

else

end

可以簡化成

if …

else

end

但是我比較習慣有()的寫法

.

迴圈

for (i=1 : 1 : 100)

end

意思為初始直,每回合加多少,到多少之後就不做了

我的習慣是 : 前後要空格,避免和1:3的意思混淆,(for中是分段,不是比例也不是~的意思)

可以不加()

初始直,遞增值可以是負的,但要注意矩陣index必須>0

.

註釋

c的//,matlab中使用%

然後c的/* */,matlab是

%{

%}

但不是每一版的matlab都可以夾擊註釋,第6版以前好像不行

大概就這樣,其他的打xxxx help就可以得到函式使用說明

 

[MATLAB] matlab其實很簡單… 有 “ 2 則留言 ”

迴響