matlab——生成隨機數(shù)
#### rands()
rands(n,m) 生成n*m的[-1~1]的矩陣
#### rand()
rand(n,m) 生成n*m的[0-1]的矩陣
rand 括號可省去。
#### randi()
randi([M,N],n,m); 生成nxm大小的元素在M-N之間的整數(shù)矩陣
#### unifrnd()
unifrnd(a,b,n,m)生成(a,b)區(qū)間內(nèi)的n x m的隨機小數(shù)矩陣
matlab——畫圖指令
xlim([xmin,xmax]) 設(shè)置或查詢 x 坐標軸范圍
subplot(n, m, i) 將第 i 張圖放在n x m 的一張大圖上。(只是確認畫的位置,沒有開始畫)
subplot(121)一行兩列第一張,中間可以用逗號隔開
set(gca,'ytick',[]) %刪除 當前圖 y 軸刻度(gca 是用來返回當前axes 對象的句柄)
set(gca, 'xtick', year(1:1:end))
mesh繪出彩色的線,surf繪出彩色的面。(shading flat % 看起來光滑一點)
text(year(end-1)+0.2,0.55,'臨界線') % 在坐標(year(end-1)+0.2,0.55)上添加文本
title('shading faceted') 給圖添加標題
fimplicit3(f,interval,'EdgeColor', 'none', 'FaceAlpha',0.5) 在默認區(qū)間 [-5 5]上繪制 f(x,y,z) = 0 定義的三維隱函數(shù)。(f = @(x,y,z) x.^2 + y.^2 - z.^2)(interval = [-5 5 -5 5 0 5]; % 指定范圍)
fplot(f, [2.5, 7]) 按照給出的函數(shù)在基于已給橫坐標范圍上作圖(f=@(x) k*x+b)
axis([0 15 -inf inf]) 設(shè)置橫縱坐標
axis vis3d % 凍結(jié)屏幕高寬比,使得一個三維對象的旋轉(zhuǎn)不會改變坐標軸的刻度顯示
alpha(0.8) % 設(shè)置透明度為0.8,這時候隱隱約約能看到(透明度介于0-1之間,越大表示越透明)
ylabel(ylab{i}) y軸標題
contour(x,y,z, n, '--','ShowText','on','LineWidth',2) 將等高線的層數(shù)設(shè)置為n(也可以自己選擇:[3,3]只顯示3); 設(shè)置等高線為虛線; 顯示每一層的高;(x,y)是經(jīng)過meshgrid過的
colorbar % 顯示顏色欄,也可以手動插入(承上)
contourf函數(shù):和contour函數(shù)類似,只不過畫出來的等高線圖有顏色填充
contour3函數(shù):3維等高線圖,等高線不再投影到x-y平面
legend('a', 'b', 'c','Location','SouthEast') 依次添加標注到指定位置,也可以手動拖動來移動位置。
fcontour(z,'fill','on') % 繪制等高線 ;在等高線線條間進行填充
fmesh(x,y,z,[0 2*pi 0 pi]) (syms u v)三維圖
plot3(x,y,z) % 繪制三維空間下的折線圖
plotyy(x,y1,x,y2) 繪制雙軸坐標
meshc函數(shù):除了mesh函數(shù)圖形外,還在xy平面上繪制曲面的等高線
meshz函數(shù):除了mesh函數(shù)圖形外,還在xy平面上繪制曲面的底座
plot(x, y, 'ro', new_x, p1, '-') 繪制x,y 的紅色三點圖, new_x,p1 的直線連接圖
plot(G, 'EdgeLabel', G.Edges.Weight, 'linewidth', 2) 圖論調(diào)整圖線長、標注
myplot = plot(G, 'EdgeLabel', G.Edges.Weight, 'linewidth', 2)將圖賦給一個變量
pause(3) % 暫停3秒后再繼續(xù)接下來的命令
matlab——文件讀寫
readtable('table.xlsx') 讀取文件
matrix = csvread('matrix.csv', 0, 0, [0,0,1,2]) 讀取文件{行,列,左上偏移量,右下偏移量}
csvwrite('matrix.csv',matrix)
matrix = dlmread('matrix.txt', ';' , 'A1..D2' ) 讀取ASCLL分隔的文件
dlmwrite('matrix.txt',matrix) 內(nèi)容導出
uiimport() 導入數(shù)據(jù)
[values, headertxt ] = xlsread('capri.xlsx','sheet_name', [A1:D3]) 讀取文件
xlswrite('matrix.xlsx',matrix) 內(nèi)容導出
matlab——操作矩陣
unique(x0)函數(shù): 剔除一個矩陣或者向量的重復值,并將結(jié)果按照從小到大的順序排列
repmat(A,n,m) n x m 的A矩陣
reshape(A,[2,25]) 重構(gòu)矩陣A為一個2 x 25大小的矩陣
roundn(3.1415, -2) 對3.1415小數(shù)點后2為四舍五入 (0是個位;1是十位;2百位)
reandperm(n,k) 總共n個元素,打亂順序,顯示前k個
ismember (A, B) 判斷A矩陣的元素是否在B矩陣中:0 / 1
prod(A,2) 按行連乘(默認按列)
mapminmax()
nchoosek (A, n) 選取A中n個元素的所有組合情況。(保持先后順序)
[sorted_S, index] = sort(stand_S, 'descend') 按降序排序index 為原數(shù)列中的序號(保留排序前的索引)
sort(A, 2) 對行進行升序排序, (默認對列進行升序排序)
matlab——數(shù)值運算
factor(12) % 對常數(shù)或多項式進行因式分解
collect(z,y) 合并同類項
expand(y) 多項式展開
diff(y, n) %求n階導數(shù)(sym x)
py1 = diff(y1,x1,1) % 對x1求一階偏導
py3 = diff(y1,x1,x2) % 先對x1求偏導,再對x2求偏導
A4=diff(A,1,2) % 后一列減去前一列求一階差分, 最后面的2表示在列上進行差分
int(y,x) (syms x; y = x^2)不定積分
integral(y,0,4) 求y在 0-4上的定積分
[z1,z2] = numden(sym(2.5)) % 對常數(shù)或多項式計算分子與分母
simplify(y) % 化簡(syms a ;y=(cot(a/2)-tan(a/2))(1+tan(a)tan(a/2)))
answ = solve(sin(x) == 1, x) 求解單變量方程
matlab——統(tǒng)計相關(guān)
-G
gplotmatrix(meas,meas,species) 特征散點圖和所屬類別
skewness(A)每一列的偏度
std(Test) 每一列的標準差
y = tpdf(x,28); %求t分布的概率密度值; 28是自由度 。
tinv t分布有關(guān)
tabulate(species) 得到變量統(tǒng)計數(shù)據(jù)
-C
corrcoef(Test) 計算各列的相關(guān)系數(shù)
[R,P] = corr(Test, 'type' , 'Spearman') 計算矩陣各列的斯皮爾曼相關(guān)系數(shù)和p值
cumsum(x0) 累加函數(shù)
R = cov(X); 計算樣本協(xié)方差矩陣
exprnd(2, 3, 4) 3x4的均值為2的指數(shù)分布隨機數(shù)(對應(yīng)的參數(shù)為0.2)
[V, D] = eig(A) V是特征向量 ,D是特征值
[h, p] = jbtest(Test(:,1), 0.05) 檢驗第一列數(shù)據(jù)是否為正態(tài)分布
-K
kurtosis(Test); %每一列的峰度
normrnd(0, 2, 3, 4) 產(chǎn)生一個均值為0, 標準差為2 的正態(tài)分布的隨機矩陣,
大小為3x4
normcdf(0.7311) 用來計算標準正態(tài)分布的累積概率密度函數(shù)
Q
qqplot(x) 畫qq圖
-Z
X = zscore(x) 內(nèi)置的標準化函數(shù)(x-mean(x))/std(x)
matlab——基本函數(shù)
save filename.mat 保存變量
summary(A) 查看table的信息。
c = struct(f1,val1,f2,val2)
tic函數(shù)和toc函數(shù)可以用來返回代碼運行的時間
type('matrix.txt') 打印文件
table2array(D) 表格變矩陣
format long g 可以將Matlab的計算結(jié)果顯示為一般的長數(shù)字格式(默認會保留四位小數(shù),或使用科學計數(shù)法)
strcat('...', num2str(c)) 字符串鏈接
[r , c] = size(A) (1是行,2是列)
sum(A,2) 按行求和
-J
load filename.mat 導入保存變量
class(a) a變量類型
double(A) 轉(zhuǎn)化數(shù)據(jù)類型
disp('...')
diag(D); % diag函數(shù)用于得到一個矩陣的主對角線元素值(返回的是列向量)
demo 幫助
doc 幫助
[r, c] = find(D == 5, 1) 找到D中第一個值為5的數(shù)所在行列
find(X, 2) 前兩個不為零的數(shù)
max(A, [] , 2) 每行最大值構(gòu)成的列向量
mean(y, 2) 每行均值的列向量(默認是對列求均值)
median(A, 2) 對每行求中位數(shù)(默認是對列求,且若為偶數(shù)個,則取中間兩個的平均數(shù))
mod(m,n)表示求m/n的余數(shù)
A = input(' A= ') 交互式輸入
-L
length(A) 返回行和列中較大的數(shù)字
-W
who 查看變量
whos 更詳細
matlab——圖論
D = distances(G) 求出任意兩點的最短距離矩陣 (D(1,2) 1 -> 2的最短距離)
G = digraph(s, t); Matlab作有向圖
G = graph(s,t,w) 畫圖論的圖
-H
highlight(myplot, P, 'EdgeColor', 'r') (P是某條路徑)進行高亮處理
hidden off % 可以看到背部的圖像,不會遮擋(默認是看不到的)
[nodeIDs,dist] = nearest(G, 2, 10) 返回G中與節(jié)點s在d距離之內(nèi)的所有節(jié)點和相應(yīng)距離
[P,d] = shortestpath(G, 9, 4) 求某兩個節(jié)點之間的最短路徑(P是路徑,d是距離)
matlab——規(guī)劃問題
[x,fval] = fmincon(@fun1,x0,A,b,Aeq,beq,lb,ub,@nonlfun1) (c實際上就是非線性不等式約束,ceq實際上就是非線性等式約束,由最后那個函數(shù)求得)
[x,fval] = fminimax(@Fun1,x0,A,b,Aeq,beq,lb,ub,@nonlfun1)(目標函數(shù)用一個函數(shù)向量表示f = Fun1;f(1),f(2)....)
[x, fval] = intlinprog(f,intcon, A,b,Aeq,beq,lb,ub,options) 線性規(guī)劃問題的求解(加入了intcon參數(shù)可以指定那些決策變量是整數(shù))
x = linprog(f,A,b,Aeq,beq,lb,ub,options) 線性規(guī)劃問題的求解(f目標函數(shù)的系數(shù),A:不等式左邊系數(shù),b:不等式又變系數(shù);Aeq:等式左邊系數(shù);)
vpasolve(eqn, x, [0 2]) 用vpasolve函數(shù)指定求[0 2]上的解
matlab——插值預測
p = interpn(x, y, new, 'spline') 對n維數(shù)據(jù)的插值。
p1 = pchip(x, y, new_x) 對x, y 進行三次埃爾米特插值并在new_x位置的函數(shù)值賦給p1
p2 = spline(x, y, new_x) 對x, y 進行三次樣條插值并在new_x位置的函數(shù)值賦給p1