matlab——生成随机数
#### 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之间的整数矩阵
#### unifrnd()
unifrnd(a,b,n,m)生成(a,b)区间内的n x m的随机小数矩阵
matlab——画图指令
xlim([xmin,xmax]) 设置或查询 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) 在默认区间 [-5 5]上绘制 f(x,y,z) = 0 定义的三维隐函数。(f = @(x,y,z) x.^2 + y.^2 - z.^2)(interval = [-5 5 -5 5 0 5]; % 指定范围)
fplot(f, [2.5, 7]) 按照给出的函数在基于已给横坐标范围上作图(f=@(x) k*x+b)
axis([0 15 -inf inf]) 设置横纵坐标
axis vis3d % 冻结屏幕高宽比,使得一个三维对象的旋转不会改变坐标轴的刻度显示
alpha(0.8) % 设置透明度为0.8,这时候隐隐约约能看到(透明度介于0-1之间,越大表示越透明)
ylabel(ylab{i}) y轴标题
contour(x,y,z, n, '--','ShowText','on','LineWidth',2) 将等高线的层数设置为n(也可以自己选择:[3,3]只显示3); 设置等高线为虚线; 显示每一层的高;(x,y)是经过meshgrid过的
colorbar % 显示颜色栏,也可以手动插入(承上)
contourf函数:和contour函数类似,只不过画出来的等高线图有颜色填充
contour3函数: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函数:除了mesh函数图形外,还在xy平面上绘制曲面的等高线
meshz函数:除了mesh函数图形外,还在xy平面上绘制曲面的底座
plot(x, y, 'ro', new_x, p1, '-') 绘制x,y 的红色三点图, new_x,p1 的直线连接图
plot(G, 'EdgeLabel', G.Edges.Weight, 'linewidth', 2) 图论调整图线长、标注
myplot = plot(G, 'EdgeLabel', G.Edges.Weight, 'linewidth', 2)将图赋给一个变量
pause(3) % 暂停3秒后再继续接下来的命令
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) 内容导出
uiimport() 导入数据
[values, headertxt ] = xlsread('capri.xlsx','sheet_name', [A1:D3]) 读取文件
xlswrite('matrix.xlsx',matrix) 内容导出
matlab——操作矩阵
unique(x0)函数: 剔除一个矩阵或者向量的重复值,并将结果按照从小到大的顺序排列
repmat(A,n,m) n x m 的A矩阵
reshape(A,[2,25]) 重构矩阵A为一个2 x 25大小的矩阵
roundn(3.1415, -2) 对3.1415小数点后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 为原数列中的序号(保留排序前的索引)
sort(A, 2) 对行进行升序排序, (默认对列进行升序排序)
matlab——数值运算
factor(12) % 对常数或多项式进行因式分解
collect(z,y) 合并同类项
expand(y) 多项式展开
diff(y, n) %求n阶导数(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)) % 对常数或多项式计算分子与分母
simplify(y) % 化简(syms a ;y=(cot(a/2)-tan(a/2))(1+tan(a)tan(a/2)))
answ = solve(sin(x) == 1, x) 求解单变量方程
matlab——统计相关
-G
gplotmatrix(meas,meas,species) 特征散点图和所属类别
skewness(A)每一列的偏度
std(Test) 每一列的标准差
y = tpdf(x,28); %求t分布的概率密度值; 28是自由度 。
tinv t分布有关
tabulate(species) 得到变量统计数据
-C
corrcoef(Test) 计算各列的相关系数
[R,P] = corr(Test, 'type' , 'Spearman') 计算矩阵各列的斯皮尔曼相关系数和p值
cumsum(x0) 累加函数
R = cov(X); 计算样本协方差矩阵
exprnd(2, 3, 4) 3x4的均值为2的指数分布随机数(对应的参数为0.2)
[V, D] = eig(A) V是特征向量 ,D是特征值
[h, p] = jbtest(Test(:,1), 0.05) 检验第一列数据是否为正态分布
-K
kurtosis(Test); %每一列的峰度
normrnd(0, 2, 3, 4) 产生一个均值为0, 标准差为2 的正态分布的随机矩阵,
大小为3x4
normcdf(0.7311) 用来计算标准正态分布的累积概率密度函数
Q
qqplot(x) 画qq图
-Z
X = zscore(x) 内置的标准化函数(x-mean(x))/std(x)
matlab——基本函数
save filename.mat 保存变量
summary(A) 查看table的信息。
c = struct(f1,val1,f2,val2)
tic函数和toc函数可以用来返回代码运行的时间
type('matrix.txt') 打印文件
table2array(D) 表格变矩阵
format long g 可以将Matlab的计算结果显示为一般的长数字格式(默认会保留四位小数,或使用科学计数法)
strcat('...', num2str(c)) 字符串链接
[r , c] = size(A) (1是行,2是列)
sum(A,2) 按行求和
-J
load filename.mat 导入保存变量
class(a) a变量类型
double(A) 转化数据类型
disp('...')
diag(D); % diag函数用于得到一个矩阵的主对角线元素值(返回的是列向量)
demo 帮助
doc 帮助
[r, c] = find(D == 5, 1) 找到D中第一个值为5的数所在行列
find(X, 2) 前两个不为零的数
max(A, [] , 2) 每行最大值构成的列向量
mean(y, 2) 每行均值的列向量(默认是对列求均值)
median(A, 2) 对每行求中位数(默认是对列求,且若为偶数个,则取中间两个的平均数)
mod(m,n)表示求m/n的余数
A = input(' A= ') 交互式输入
-L
length(A) 返回行和列中较大的数字
-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中与节点s在d距离之内的所有节点和相应距离
[P,d] = shortestpath(G, 9, 4) 求某两个节点之间的最短路径(P是路径,d是距离)
matlab——规划问题
[x,fval] = fmincon(@fun1,x0,A,b,Aeq,beq,lb,ub,@nonlfun1) (c实际上就是非线性不等式约束,ceq实际上就是非线性等式约束,由最后那个函数求得)
[x,fval] = fminimax(@Fun1,x0,A,b,Aeq,beq,lb,ub,@nonlfun1)(目标函数用一个函数向量表示f = Fun1;f(1),f(2)....)
[x, fval] = intlinprog(f,intcon, A,b,Aeq,beq,lb,ub,options) 线性规划问题的求解(加入了intcon参数可以指定那些决策变量是整数)
x = linprog(f,A,b,Aeq,beq,lb,ub,options) 线性规划问题的求解(f目标函数的系数,A:不等式左边系数,b:不等式又变系数;Aeq:等式左边系数;)
vpasolve(eqn, x, [0 2]) 用vpasolve函数指定求[0 2]上的解
matlab——插值预测
p = interpn(x, y, new, 'spline') 对n维数据的插值。
p1 = pchip(x, y, new_x) 对x, y 进行三次埃尔米特插值并在new_x位置的函数值赋给p1
p2 = spline(x, y, new_x) 对x, y 进行三次样条插值并在new_x位置的函数值赋给p1