MATLAB基础速成
變量
MATLAB程序的基本數據單元是數組。標量在MATLAB里面也被當做數組處理,被看作只有一行一列的數組。數組可以定義為向量或矩陣,向量一般描述一維數組,矩陣一般描述二維或多維數組。數組的定義要用[]來括起來,數組中同一行元素間以空格或逗號','隔開,行與行間由分號';'隔開。
?
定義及賦值方式:
| 實數 | >> x = 5 |
| 復數 | >> x = 5 + 10i 或者>> 5 + 10j |
| 行向量 | >> x = [1 2 3] 或者>> x = [1, 2, 3] |
| 列向量 | >> x = [1; 2; 3] |
| 3 * 3 矩陣 | >> x = [1 2 3; 4 5 6; 7 8 9] |
?
固定變量
| pi??? | ? ? ? ?π |
| i, j?? | ? ? ?? |
| inf ????? | ? ? ? ?∞? |
| NaN | ? ? ?非數 |
| ans ? | ? 默認變量 |
向量生成
1.直接生成向量
>> x = [0.00 1.00 2.00]
x =
0.00 1.00 2.00
>> x = [0.00 1.00 2.00]'?????????? %轉置
x =
0.00
1.00
2.00
2.利用冒號生成向量
用兩個冒號安順序
隔開‘第一個值’,‘步增’ 和‘最后一個值’ 就可生成指定的向量. 如果步增為1, 則可以省略掉步增
和一個冒號, 比如
>> x = 1:0.5:3
x =
[1.0 1.5 2.0 2.5 3.0]
>> y = 1:3
x =
[1 2 3]
3.利用線性等分生成向量
linspace(star,end,gap)? 生成一個線性等分向量
格式y=linspace(x1,x2,n)
表示生成n維向量,其中x1為第一個數,x2為最后一個數,當n默認時,系統默認生成100維向量。
例:
>>y=linspace(0,2,5)
y =
?
???????? 0??? 0.5000??? 1.0000??? 1.5000??? 2.0000
矩陣的生成
1.直接輸入矩陣
>> a=[1,2,3;4,5,6;exp(1),7/6,abs(-2.8)]
?
a =
?
??? 1.0000??? 2.0000??? 3.0000
??? 4.0000??? 5.0000??? 6.0000
??? 2.7183??? 1.1667??? 2.8000
2.利用函數生成矩陣
zeros生成全0陣
>> x=zeros(2,3)
x =
?
???? 0???? 0???? 0
???? 0???? 0???? 0
ones生成全1陣
>> y=ones(2)
?
y =
?
???? 1???? 1
???? 1???? 1
eye(m,n)生成單位陣
>> x=eye(2)
?
x =
?
???? 1???? 0
???? 0???? 1
獲取向量/矩陣中的元素
指定元素所在的行和列,即可獲得指定的一個或多個元素。
例:有矩陣A = [1 2 3; 4 5 6; 7 8 9]
>> x = A(1,3)
x =
3
>> y = A(2,:)
x =
[4 5 6]
>> z = A(1:2,1:2)
z =
[1 2; 4 5]
矩陣和數組運算
1.算數運算
1)基本運算
| + | ?加法運算 |
| - | 減法運算 |
| * | 乘法運算 |
| / | 右除運算 |
| \ | 左除運算 |
| ^ | 指數運算 |
| ' | 轉置運算 |
運算法則同線性代數
附:
x = A\B 是Ax =B 的解,而x=B/A是xA =B 的解。
2)點運算 針對同階對應分量的運算
?
| .* | ?乘法運算 |
| ./ | 右除運算 |
| .\ | 左除運算 |
| .^ | 指數運算 |
例:
>> A = [1 2; 3 4]
A =
1 2
3 4
>> B = A*A
B =
7 10
15 22
>> C = A.*A
C =
1 4
9 16
2.關系運算
判斷兩同階數組(或者一個是矩陣,另一個是標量)對應分量間的的關系。
| < | 小于 |
| <= | ?小于等于 |
| > | 大于 |
| >= | 大于等于 |
| == | ?等于 |
| ~= | 不等于 |
若連個矩陣進行關系運算,則將兩個矩陣對應元素逐一進行關系運算。輸出結果只包含0和1。
例:
>> A = [1 3 4 2 5]
>> B = [2 1 3 5 4]
>> C = A>B % C = [1> 2, 3 >1, 4 >3, 2 >5, 5 >4]
C =
0 1 1 0 1
>> D = A<=3 % D = [1<=3, 3<=3, 4<=3, 2<=3, 5<=3]
D =
1 1 0 1 0
3.邏輯運算
| & | 與 |
| | | 或 |
| ~ | 非 |
例:
>> A = [1 3 4 2 5];
>> B = [2 1 3 5 4];
>> C = (A>B) & (A<=3)
C =
0 1 0 0 0
常用數學函數
| sin | 正弦 | Asin | 反正弦 |
| cos | 余弦 | acos | 反余弦 |
| tan | 正切 | atan | 反正切 |
| cot | 余切 | acot | 反余切 |
| Exp | ?指數函數 | Sqrt | ?平方根 |
| Log | ?自然對數 | log10 | 以10 為底的對數 |
| abs | 絕對數 | sign | 符號函數 |
以上函數是針對矩陣對應元素逐一進行函數的運算。
例:
>> theta = 0:pi/3:pi
theta =
0 1.0472 2.0944 3.1416
>> sin(theta)
ans =
0 0.8660 0.8660 0.0000
數組操作函數
| rot90(A) | 將A逆時針方向旋轉90° |
| rot90(A,K) | 將A逆時針方向旋轉(90*K)° |
| fliplr(A) | 將矩陣A左右翻轉 |
| flipud(A) | 將矩陣A上下翻轉 |
| flipdim(A,dim) | 將矩陣A的dim維翻轉,dim=1表示行,dim=2表示列 |
| max | 輸出最大數 |
| min | 輸出最小數 |
| sum | 求和 |
例:
flipud, fliplr, rot90
>> A = [1 2 3; 4 5 6; 7 8 9];
>> B = flipud(A)
A =
7 8 9
4 5 6
1 2 3
>> C = rot90(A)
C =
3 6 9
2 5 8
1 4 7
sum
多維時默認求各列之和,若后加2則求各行之和
>> A = [1 2 3];
>> sum(A)
ans =
6
>> B = [1 2 3; 4 5 6; 7 8 9];
>> sum(B)
ans =
12 15 18
>> sum(B,2)
ans =
6
15
25
?
>> sum(B(:))??????? %求所有項總和
ans =
??? 45
max,min
>> A = [1 2 3];
>> max(A)????????
ans =
3
>> max(A,2)????? 將A中所有元素與2比較
ans =
2 2 3
>> B = [1 3 9; 4 8 6];????? B為2維按照每列取最大值
>> max(B)
ans =
4 8 9
>> max(B, [], 2)??????
ans =
9
8
基本語句
for .. end
if .. else .. end
while .. end
switch .. case .. end
?例:求1-10 以內的奇數和
% sum of the odd numbers between 1 and 10
x = 0;
for i = 1:10
if mod(i,2)
x= x + i;
end
end
?
簡單作圖
plot(x,y,'s')
其中x表示橫坐標向量,y表示縱坐標向量,s為選項字符串,用于控制線型與顏色。常用表示見繪圖參數表。
title(圖形名稱)
xlabel(x 軸說明); ylabel(y 軸說明)
text(x,y, 圖形說明)
legend(圖例1, 圖例2, ...)
grid on / grid off / grid minor
axis([xmin xmax ymin ymax]), xlim([xmin, xmax])
?
?
繪圖參數表
| b | ?藍 | . | 點 | ^ | ?向上三角形 | - | ?實線 |
| g | ?綠 | o | ?圓 | < | ?向左三角形 | : | ?點線 |
| r | ?紅 | x | ?叉號 | ? | ?向右三角形 | -. | ?點劃線 |
| c | ?青 | + | ?加號 | p | ?五角星 | -- | ?虛線 |
| m | ?紫 | ? | ?星號 | h | ?六角星 | ? | ? |
| y | ?黃 | s | ?正方形 | ? | ? | ? | ? |
| k | ?黑 | d | ?菱形 | ? | ? | ? | ? |
| w | ?白 | v | ?向下三角形 | ? | ? | ? | ? |
?
例1:
x=-2*pi:0.1:2*pi;
y1=sin(x);
y2=cos(x);
plot(x,y1,'-b');
hold on???????????? %圖像保持
plot(x,y2,'-r');
xlabel('X')
ylabel('Y')
text(0,0,'(0,0)')
legend('sinx','conx')
例2:
%建模一家
t=0:pi/180:4*pi;
x=16*sin(t).^3;
y=13*cos(t)-5*cos(2*t)-2*cos(3*t)-cos(4*t);
plot(x-3,y,'-r',x+3,y,'-y',x+9,y,'-b');
axis([-20,25,-20,15]);
title('Cute and charming Family')
legend('Feng','Wei','Shi')
?
?
注:本文是我學習MATLAB時整理的筆記,方便日后查看復習。分享給大家,文中可能有一些錯誤,或簡陋難以理解的地方,大家可以指正,共同進步。(部分內容參照網上資料,侵刪)
總結
以上是生活随笔為你收集整理的MATLAB基础速成的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java清除session_退出页面自动
- 下一篇: java 聊天室 私聊_使用socket