分號:分割行函數
空格或逗號:分割列編碼
空格或逗號分割命令行
>> v = [1 2 3] % 等效:v = [1, 2, 3] v = 1 2 3 >> v(2) % 只有一行,因此指定就是列 ans = 2
分號分割code
>> v = [1; 2; 3] v = 1 2 3 >> v(2) % 只有一列,因此指定就是行 ans = 2
與向量同樣,空格或逗號分割列,分號分割行orm
冒號:表明全部,全部行或全部列ip
>> A = [1, 2; 3, 4] % 一行寫完 A = 1 2 3 4 >> A = [1, 2; % 分行寫 > 3, 4] A = 1 2 3 4
a:c --- 從a到cci
a:b:c --- 從a,間隔b,到celement
向量也能夠用這樣的方法建立文檔
>> 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
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
>> ones(2, 3) ans = 1 1 1 1 1 1
>> 0*ones(2, 3) ans = 0 0 0 0 0 0 >> zeros(2, 3) ans = 0 0 0 0 0 0
>> rand(1, 3) % 0~1的隨機數,1行3列 ans = 0.99291 0.65946 0.95102
>> randn(1, 3) % 高斯分佈 ans = 0.14646 2.02587 1.33266
冒號:表明全部,全部行或全部列io
A = 1 2 3 4 5 6 7 8 9 >> A(2, 2) % 第二行,第二列,先定行再定列 ans = 5
>> A(1, :) % 第一行,全部,元素 ans = 1 2 3 >> A(:, 2) % 第二列,全部,元素 ans = 2 5 8
>> 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只有一列,規模不匹配 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
>> A A = 1 2 3 4 >> A(:) ans = 1 3 2 4 >> A(:)' ans = 1 3 2 4
在訪問基礎上,給定相同規模的數據
A = 1 2 3 4 5 6 7 8 9 >> A(3, 3) = 10 % 修改單個元素的值 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
>> 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
對應元素運算
維度相同:對應元素相乘
行維度相同:每行對應元素相乘
列維度相同:每列對應元素相乘
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
矩陣乘以常數,A * 2,除能夠是,A / 2
反過來,2 * A沒問題,2 / A 就不行,要用2 ./ A
A = 1 2 3 4 >> 1 ./ A ans = 1.00000 0.50000 0.33333 0.25000
每個元素作比較,標記0或1
>, <, ==, !=(或~=), &&, ||
A = 1 2 3 4 >> A > 2 ans = 0 0 1 1
或 | ,函數xor
且 &
非 ~
異或 ^
i = 1 >> if i == 1 > disp(1) > elseif i == 2 > disp(2) > else > disp(3) > end
>> for i = 1:3 % 從1到3 > disp(i) > end 1 2 3
>> while i <= 3 > disp(i) > i = i + 1 > end 1 2 3
與C、C++、Java沒有區別
size:獲取矩陣維度
length:獲取最大維度
who:變量列表
whos:變量詳情
clear 變量名:刪除指定變量
clear:刪除全部變量
find:返回符合條件元素的下標
log:log以e爲底
exp:e的多少次方
abs:絕對值
floor:向下取整
ceil:向上取整
sum:求和
prop:求積
獲取矩陣維度
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
獲取最大維度
A = 1 2 3 4 5 6 >> length(A) % 輸出最大維度 ans = 3
變量列表
>> who % 如今都有哪裏變量 Variables in the current scope: A aSize ans featuresX w
變量詳情
>> 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 featuresX >> who Variables in the current scope: A aSize ans w >> clear % 清除所有變量 >> who % 一個變量都沒有了
返回符合條件元素的下標
A = 5 6 7 8 >> [r, c] = find(A > 6) % 符合要求的是:第二行第一個和第二行第二個 r = 2 2 c = 1 2
求和
>> A = [1, 2; 3, 4] A = 1 2 3 4 >> sum(A) % 等效:sum(A, 1) ans = 4 6 >> sum(A, 2) ans = 3 7
求積
>> A A = 1 2 3 4 >> prod(A) % 等效:prod(A, 1) ans = 3 8 >> prod(A, 2) ans = 2 12
>> 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
兩個矩陣比較每一個元素,保留大的
>> 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
參數二:與之比較的矩陣
參數三:按行仍是按列
>> 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
生成亂序序列
>> 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
建立存放函數的文件(文件名要與函數名相同,.m結尾)
square.m
建立函數
% 一個返回值 function 返回值 = 函數名(參數列表) 函數體 end % 多個返回值 function [返回值1, 返回值2] = 函數名(參數列表) 函數體 end
function y = square(x) y = x^2; end function [y1, y2] = squareAndCube(x) y1 = x^2; y2 = x^3; end
進入到存放函數文件的目錄
添加存放函數文件的目錄,到,搜索路徑
>> cd Downloads/ % 進入存放函數文件的目錄 >> square(2) ans = 4 >> addpath('~/Downloads') % 添加到搜索路徑 >> cd .. >> square(2) ans = 4
與Linux命令同樣
>> pwd % 當前路徑 ans = /Users/XXX >> cd ~/Developer >> pwd ans = /Users/XXX/Developer >> ls % 列出目錄文件和文件夾 >> cd .. % 回到上級目錄
>> load featuresX.dat % 載入數據,變量名爲featuresX >> data = load('ex1data1.txt'); % 變量名爲data >> save featuresX.mat featuresX; % 將featuresX中的數據保存到featuresX文件中 >> save hello.txt v -ascii % 將變量v中得數據已ascii編碼方式保存到hello.txt中
簡化命令行:PS1('>> ');
關閉圖表:close或close all
命令行清屏:clc
%後爲註釋
a = 3 % 會打印數據 a = 3; % 不會打印數據,分號能夠防止輸出
disp(pi) % 輸出:3.1416 disp(sprintf('pi is %.2f', pi)) % c語言風格
format long % 修改默認打印格式
help size % 查看size函數的幫助文檔 help help % 查看help函數的幫助文檔
LineWidth:線寬
MarkerFaceColor:標記顏色
MarkerSize:標記大小
ylabel('x');
xlabel('y');
>> w = -6 + sqrt(10)*randn(1, 10000); >> hist(w) >> hist(w, 30) % 30組