大體內(nèi)容是轉(zhuǎn)的荚藻,但是繪圖部分做了補(bǔ)充和修改。
向量
- 分號(hào):分割行
- 空格或逗號(hào):分割列
創(chuàng)建與訪問(wèn)
行向量
空格或逗號(hào)分割
>> v = [1 2 3] % 等效:v = [1, 2, 3]
v =
1 2 3
>> v(2) % 只有一行,所以指定就是列
ans = 2
列向量
- 分號(hào)分割
>> v = [1; 2; 3]
v =
1
2
3
>> v(2) % 只有一列际看,所以指定就是行
ans = 2
矩陣
- 與向量一樣掌实,空格或逗號(hào)分割列,分號(hào)分割行
- 冒號(hào):代表所有听想,所有行或所有列
創(chuàng)建
>> A = [1, 2; 3, 4] % 一行寫(xiě)完
A =
1 2
3 4
>> A = [1, 2; % 分行寫(xiě)
> 3, 4]
A =
1 2
3 4
創(chuàng)建技巧
- a:c --- 從a到c
- a:b:c --- 從a腥刹,間隔b,到c
- 向量也可以用這樣的方法創(chuàng)建
>> A = [1:3; 4:6]
A =
1 2 3
4 5 6
>> A = [1:2:5; 2:2:6]
A =
1 3 5
2 4 6
特殊矩陣
單位矩陣
>> eye(3) % 單位矩陣
ans =
Diagonal Matrix
1 0 0
0 1 0
0 0 1
>> flipud(eye(3))
ans =
Permutation Matrix
0 0 1
0 1 0
1 0 0
轉(zhuǎn)置矩陣
A =
1 2
3 4
>> A'
ans =
1 3
2 4
逆矩陣
A =
1 2
3 4
>> pinv(A)
ans =
-2.00000 1.00000
1.50000 -0.50000
>> pinv(A) * A
ans =
1.00000 0.00000
-0.00000 1.00000
全1矩陣
>> ones(2, 3)
ans =
1 1 1
1 1 1
全0矩陣
>> 0*ones(2, 3)
ans =
0 0 0
0 0 0
>> zeros(2, 3)
ans =
0 0 0
0 0 0
隨機(jī)矩陣
>> rand(1, 3) % 0~1的隨機(jī)數(shù)汉买,1行3列
ans =
0.99291 0.65946 0.95102
高斯分布矩陣
>> randn(1, 3) % 高斯分布
ans =
0.14646 2.02587 1.33266
訪問(wèn)
- 冒號(hào):代表所有衔峰,所有行或所有列
訪問(wèn)元素
A =
1 2 3
4 5 6
7 8 9
>> A(2, 2) % 第二行,第二列蛙粘,先定行再定列
ans = 5
訪問(wèn)單行或單列
>> A(1, :) % 第一行垫卤,所有,元素
ans =
1 2 3
>> A(:, 2) % 第二列出牧,所有穴肘,元素
ans =
2
5
8
訪問(wèn)多行或多列
>> A(:, [1, 3]) % 第一列和第三列,所有舔痕,元素
ans =
1 3
4 6
7 9
>> A([1, 3], :) % 第一行和第三行评抚,所有,元素
ans =
1 2 3
7 8 9
連接
- C = [A B]伯复,把B按列加到A上慨代,生成C
- C = [A; B],把B按行加到A上啸如,生成C
添加元素
>> A = [1]
A = 1
>> A = [A, 2] % 把2侍匙,按列,添加到A上叮雳,再賦給A
A =
1 2
>> A = [A; 3] % A有兩列想暗,3只有一列妇汗,規(guī)模不匹配
error: vertical dimensions mismatch (1x2 vs 1x1)
添加行或列
>> A = [A; [3, 4]] % 將向量[3, 4],作為行说莫,添加到A上铛纬,在賦給A
A =
1 2
3 4
>> A = [A, [5; 6]] % 將向量[5, 6],作為列唬滑,添加到A上告唆,在賦給A
A =
1 2 5
3 4 6
矩陣連接
>> A = [1, 2; 3, 4]
A =
1 2
3 4
>> B = [5, 6; 7 ,8]
B =
5 6
7 8
>> [A; B] % 將B,作為行晶密,添加到A上
ans =
1 2
3 4
5 6
7 8
所有的數(shù)據(jù)放入一個(gè)向量中
>> A
A =
1 2
3 4
>> A(:)
ans =
1
3
2
4
>> A(:)'
ans =
1 3 2 4
賦值
- 在訪問(wèn)基礎(chǔ)上擒悬,給定相同規(guī)模的數(shù)據(jù)
A =
1 2 3
4 5 6
7 8 9
>> A(3, 3) = 10 % 修改單個(gè)元素的值
A =
1 2 3
4 5 6
7 8 10
>> A(1, :) = [0, 0, 0] % 修改一行的值
A =
0 0 0
4 5 6
7 8 10
>> A(2:3, 2:3)
ans =
5 6
8 10
>> A(2:3, 2:3) = [0, 0; 0, 0] % 修改指定矩陣的值
A =
0 0 0
4 0 0
7 0 0
運(yùn)算
加,減
>> A = [1 1; 1 1]
A =
1 1
1 1
>> B = [2 2; 2 2]
B =
2 2
2 2
>> A + B
ans =
3 3
3 3
>> A - B
ans =
-1 -1
-1 -1
>> A - 1
ans =
0 0
0 0
相乘
>> A = [1 2; 3 4]
A =
1 2
3 4
>> B = [5 6; 7 8]
B =
5 6
7 8
>> A * B
ans =
19 22
43 50
>> -A % -1 * A
ans =
-1 -2
-3 -4
點(diǎn)運(yùn)算
對(duì)應(yīng)元素運(yùn)算
- 維度相同:對(duì)應(yīng)元素相乘
- 行維度相同:每行對(duì)應(yīng)元素相乘
- 列維度相同:每列對(duì)應(yīng)元素相乘
- A .* B = B .* A
- 乘 *稻艰;除 /; 平方 ^懂牧;等
維度相同
A =
1 1
1 1
B =
2 3
2 3
>> A .* B
ans =
2 3
2 3
行維度相同
A =
1 1
1 1
B =
5 6
>> A .* B
ans =
5 6
5 6
列維度相同
A =
1 1
1 1
B =
5
6
>> A .* B
ans =
5 5
6 6
點(diǎn)除
- 矩陣乘以常數(shù),A * 2尊勿,除可以是僧凤,A / 2
- 反過(guò)來(lái),2 * A沒(méi)問(wèn)題元扔,2 / A 就不行躯保,要用2 ./ A
A =
1 2
3 4
>> 1 ./ A
ans =
1.00000 0.50000
0.33333 0.25000
邏輯
- 每一個(gè)元素做比較,標(biāo)記0或1
- >, <, ==, !=(或~=), &&, ||
A =
1 2
3 4
>> A > 2
ans =
0 0
1 1
位運(yùn)算
- 或 | 澎语,函數(shù)xor
- 且 &
- 非 ~
- 異或 ^
控制語(yǔ)句
if
i = 1
>> if i == 1
> disp(1)
> elseif i == 2
> disp(2)
> else
> disp(3)
> end
for
>> for i = 1:3 % 從1到3
> disp(i)
> end
1
2
3
while
>> while i <= 3
> disp(i)
> i = i + 1
> end
1
2
3
break途事,continue
- 與C、C++擅羞、Java沒(méi)有區(qū)別
函數(shù)
- size:獲取矩陣維度
- length:獲取最大維度
- who:變量列表
- whos:變量詳情
- clear 變量名:刪除指定變量
- clear:刪除所有變量
- find:返回符合條件元素的下標(biāo)
- log:log以e為底
- exp:e的多少次方
- abs:絕對(duì)值
- floor:向下取整
- ceil:向上取整
- sum:求和
- prop:求積
size
- 獲取矩陣維度
A =
1 2
3 4
5 6
>> aSize = size(A)
aSize =
3 2
>> size(A, 1) % 3行
ans = 3
>> size(A, 2) % 2列
ans = 2
length
- 獲取最大維度
A =
1 2
3 4
5 6
>> length(A) % 輸出最大維度
ans = 3
who
變量列表
>> who % 現(xiàn)在都有哪里變量
Variables in the current scope:
A aSize ans featuresX w
whos
變量詳情
>> whos % 變量詳情
Variables in the current scope:
Attr Name Size Bytes Class
==== ==== ==== ===== =====
A 3x2 48 double
aSize 1x2 16 double
ans 1x20 20 char
featuresX 27x2 432 double
w 1x10000 80000 double
Total is 10082 elements using 80516 bytes
clear
刪除變量
>> clear featuresX
>> who
Variables in the current scope:
A aSize ans w
>> clear % 清除全部變量
>> who % 一個(gè)變量都沒(méi)有了
find
返回符合條件元素的下標(biāo)
A =
5 6
7 8
>> [r, c] = find(A > 6) % 符合要求的是:第二行第一個(gè)和第二行第二個(gè)
r =
2
2
c =
1
2
sum
求和
>> A = [1, 2; 3, 4]
A =
1 2
3 4
>> sum(A) % 等效:sum(A, 1)
ans =
4 6
>> sum(A, 2)
ans =
3
7
prod
求積
>> A
A =
1 2
3 4
>> prod(A) % 等效:prod(A, 1)
ans =
3 8
>> prod(A, 2)
ans =
2
12
max
- 向量
>> a = [1 5 2 3.3]
a =
1.0000 5.0000 2.0000 3.3000
>> max(a)
ans = 5
>> [val, ind] = max(a)
val = 5
ind = 2
- 矩陣比較
兩個(gè)矩陣比較每個(gè)元素尸变,保留大的
>> A = rand(3)
A =
0.2620788 0.6346345 0.4659161
0.0880455 0.1258945 0.0079559
0.0296765 0.7917592 0.4321800
>> B = rand(3)
B =
0.039237 0.672424 0.214649
0.491320 0.362929 0.197626
0.821090 0.675265 0.698960
>> max(A, B)
ans =
0.26208 0.67242 0.46592
0.49132 0.36293 0.19763
0.82109 0.79176 0.69896
- 行與列的最大值
參數(shù)二:與之比較的矩陣參數(shù)三:按行還是按列
>> A = [1 2; 3 4]
A =
1 2
3 4
>> max(A) % 每列最大值
ans =
3 4
>> max(A, [], 1) % 每列最大值
ans =
3 4
>> max(A, [], 2) % 每行最大值
ans =
2
4
randperm
生成亂序序列
>> A = [2, 3, 4 ,5 ,6]
A =
2 3 4 5 6
>> rand_indices = randperm(length(A))
rand_indices =
1 2 4 5 3
>> A(:, rand_indices(1:3))
ans =
5 6 2
自定義函數(shù)
創(chuàng)建步驟
- 創(chuàng)建存放函數(shù)的文件(文件名要與函數(shù)名相同,.m結(jié)尾)
square.m
- 創(chuàng)建函數(shù)
% 一個(gè)返回值
function 返回值 = 函數(shù)名(參數(shù)列表)
函數(shù)體
end
% 多個(gè)返回值
function [返回值1, 返回值2] = 函數(shù)名(參數(shù)列表)
函數(shù)體
end
function y = square(x)
y = x^2;
end
function [y1, y2] = squareAndCube(x)
y1 = x^2;
y2 = x^3;
end
調(diào)用
進(jìn)入到存放函數(shù)文件的目錄
添加存放函數(shù)文件的目錄减俏,到召烂,搜索路徑
>> cd Downloads/ % 進(jìn)入存放函數(shù)文件的目錄
>> square(2)
ans = 4
>> addpath('~/Downloads') % 添加到搜索路徑
>> cd ..
>> square(2)
ans = 4
數(shù)據(jù)
路徑
與Linux命令一樣
>> pwd % 當(dāng)前路徑
ans = /Users/XXX
>> cd ~/Developer
>> pwd
ans = /Users/XXX/Developer
>> ls % 列出目錄文件和文件夾
>> cd .. % 回到上級(jí)目錄
載入與保存
>> load featuresX.dat % 載入數(shù)據(jù),變量名為featuresX
>> data = load('ex1data1.txt'); % 變量名為data
>> save featuresX.mat featuresX; % 將featuresX中的數(shù)據(jù)保存到featuresX文件中
>> save hello.txt v -ascii % 將變量v中得數(shù)據(jù)已a(bǔ)scii編碼方式保存到hello.txt中
其他
命令
- 簡(jiǎn)化命令行:PS1('>> ');
- 關(guān)閉圖表:close或close all
- 命令行清屏:clc
注釋
%后為注釋
打印
自動(dòng)打印
a = 3 % 會(huì)打印數(shù)據(jù)
a = 3; % 不會(huì)打印數(shù)據(jù)娃承,分號(hào)可以防止輸出
格式化
disp(pi) % 輸出:3.1416
disp(sprintf('pi is %.2f', pi)) % c語(yǔ)言風(fēng)格
默認(rèn)格式
format long % 修改默認(rèn)打印格式
幫助
help size % 查看size函數(shù)的幫助文檔
help help % 查看help函數(shù)的幫助文檔
繪圖
plot
屬性
- LineWidth:線寬
- MarkerFaceColor:標(biāo)記顏色
- MarkerSize:標(biāo)記大小
t = [0:0.1:0.98];
y1 = sin(2*pi*4*t);
plot(t,y1);
y2 = cos(2*pi*4t);
hold on ; % 使用 hold on 可以將接下來(lái)繪制的函數(shù)放在一張圖里
plot(t, y2, 'r'); % 第三個(gè)參數(shù)奏夫,表示顏色
xlabel('time');
ylabel('value'); % 標(biāo)記出x和y軸
legend('sin','cos') % 在圖像右上角,用來(lái)區(qū)分多個(gè)函數(shù)的圖例草慧,依次表示兩個(gè)曲線所表示的內(nèi)容
tiitle('my plot') % 在圖像的正上方給圖像加上標(biāo)題
print -dpng 'myPlot.png' % 輸出圖像,保存在'pwd'目錄下
close % 關(guān)閉圖像
figure(1); plot(t,y1); % 新開(kāi)第一個(gè)窗口繪制y1
figure(2); plot(t,y1); % 新開(kāi)第二個(gè)窗口繪制y2
% pos為向量中為1的行序號(hào)組成的向量桶蛔,neg為向量中為0的行序號(hào)組成的向量
plot(X(pos,1),X(pos,2),'k+','LineWidth',2,'MarkerSize',7);
plot(X(neg,1),X(neg,2),'ko','markerFaceColor','y','MarkerSize',7);
Paste_Image.png
Format arguments:
linestyle
'-' Use solid lines (default).
'--' Use dashed lines.`
':' Use dotted lines.
'-.' Use dash-dotted lines.
markerstyle
'+' crosshair
'o' circle
'*' star
'.' point
'x' cross
's' square
'd' diamond
'^' upward-facing triangle
'v' downward-facing triangle
'>' right-facing triangle
'<' left-facing triangle
'p' pentagram
'h' hexagram
color
'k' blacK
'r' Red
'g' Green
'b' Blue
'm' Magenta
'c' Cyan
'w' White
常用的修改屬性有:
"linestyle",
"linewidth",
"color",
"marker",
"markersize",
"markeredgecolor",
"markerfacecolor".
直方圖
>> w = -6 + sqrt(10)*randn(1, 10000);
>> hist(w)
>> hist(w, 30) % 30組