上學期修影像處理,這學期修多媒體概論,助教都是用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就可以得到函式使用說明
good~matlab很好用~我上數值方法也用它
good