Matlab学习

  1. Matlab学习
    1. 坐标轴设置
    2. 矩阵定义
    3. 常用函数
    4. 画图
    5. 论文中matlab标准画图
    6. ndgrid 生成网格
    7. size 返回矩阵的维度
    8. sum 求元素的和
    9. fmincon
    10. solve 解方程(组)

Matlab学习

坐标轴设置

axis([-0.6,0.6,-0.5,0.5])          #设置坐标轴显示范围
set(gca,'xtick',-0.6:0.2:0.6)      #坐标轴标注范围和间隔
set(gca,'ytick',-0.5:0.1:0.5)
axis equal                         #使x,y轴的单位长度相同
axis square                        #出图为正方形
xlabel('x')
ylabel('y')

矩阵定义

a、矩阵元素必须在”[ ]”内;
b、矩阵的同行元素之间用空格或逗号隔开;
c、矩阵的行与行之间用”;”(或回车符)隔开;
d、矩阵的元素可以是数值、变量、表达式或函数;
e、矩阵的尺寸不必预先定义。

a=[[1,2,3];[3,2,1]]
a=[1,2,3;3,2,1]

常用函数

spline  #三次样条数据插值,yy = spline(x,y,xx),返回在xx处的函数值yy
#即已知x上若干离散点对应的y中的值,用三次样条曲线插值,得到xx中点的值,xx一般为linspace()

repmat  #矩阵平铺,repmat([1,2;3,4],2,3),得到一个4×6的矩阵

画图

plot3(rDataj(1,:), rDataj(2,:),rDataj(3,:), '-','lineWidth',2,'color',[0 .8 0])
#指定线宽和颜色

论文中matlab标准画图

width = 240;   % 240pt  US letter 双栏 1pt = 1/72inch   1 inch = 25.4mm

xlabel('\fontname{宋体}力模长\fontname{Times New Roman}(N)','Fontname', 'Times New Roman');
#xlabel('Torque $M_x$ (Nm)','interpreter','latex','FontSize',8); % Latex格式的label
ylabel('\fontname{宋体}概率','Fontname', 'Times New Roman');
#设置坐标轴标识

set(gca, 'Fontsize', 8);   
#坐标轴句柄,设置坐标轴刻度数字样式
set(gca, 'XTick',0:4:20);  
#设置X轴刻度

L1 = legend([P1 P2 P3],'高斯分布','均值','阈值');
set(L1,'Location','northeast','Orientation','vertical',...
    'Fontname', '宋体','FontSize',8,'TextColor','black');
#legend 格式  

print('S:\PbD\graph\Force_threhold_change','-djpeg','-r600');
#输出


#例子
width = 240;
set(gcf,'unit','points','PaperUnits','points','PaperPosition',[0,0,width,width/5*4],...
    'position',[500 300 width width/5*4],'color','w','PaperSize',[width, width/5*4]);

..........

plot(Data(1,(n-1)*nbData+1:n*nbData), Data(m+1,(n-1)*nbData+1:n*nbData), '-','lineWidth',1.2)   
#设置线宽,最好是用变量表示,方便修改

set(gca,'xtick',1:1:10,'Fontname','Times New Roman','FontSize',8);
set(gca,'ytick',-550:50:-50,'Fontname','Times New Roman','FontSize',8);   #坐标轴刻度
xlabel('t(s)','Fontname','Times New Roman','FontSize',8);
ylabel('ave-EMG(mv)','Fontname','Times New Roman','FontSize',8);     #坐标轴标识

ndgrid 生成网格

nbGrid = 30; 
rg = linspace(-3.5,3.5,nbGrid);         #Grid range
[xm, ym] = ndgrid(rg,rg);     #size(xm)=30,30 
xg = [xm(:)'; ym(:)'];        #Grid datapoints   size(xg)=2,900
#size(xm(:)')=1,900  ,即将xm展成一行,类似于python中 np.reshape(1,-1)

size 返回矩阵的维度

size(a) #返回矩阵a的行数和列数
size(a,1)  #返回行数
size(a,2)  #返回列数

sum 求元素的和

a=[[1,2,3,4];[2,3,4,5]];
b=sum(a);   #默认是按列求和,即保持列数不变
# b=[3,5,7,9]
c=sum(a,1)
c=[3,5,7,9]
d=sum(a,2)
d=[10;14]

fmincon

# fmincon是用于求解非线性多元函数最小值的matlab函数,优化工具箱提供fmincon函数用于对有约束优化问题进行求解

x= fmincon(fun,x0,A,b) 
#给定初值x0,求解fun函数的最小值x。fun函数的约束条件为A*x<= b,x0可以是标量或向量

x= fmincon(fun,x0,A,b,Aeq,beq) 
#约束条件为Aeq*x= beq 和 A*x <= b。若没有不等式线性约束存在,则设置A=[]、b=[]

x= fmincon(fun,x0,A,b,Aeq,beq,lb,ub) 
#定义设计变量x的线性不等式约束下界lb和上界ub,使得总是有lb<= x <= ub
#若无等式线性约束存在,则令Aeq=[]、beq=[]

options = optimoptions('fmincon','Display','off');    #创建优化选项
x= fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options);
#给定初值x0,求解fun函数的最小值x,A 和 Aeq 为线性不等式约束和等式约束的系数矩阵
#A*x<= b,Aeq*x= beq,lb<= x <= ub
#在nonlcon参数中提供非线性不等式c(x)或等式ceq(x),fmincon函数要求c(x) <= 0且ceq(x)= 0
#用options参数指定的参数进行最小化

## 简单应用
func = @(x)3*x^2+4*x+5;
options = optimoptions('fmincon','Display','off');
[a,b]=fmincon(func,-4,[],[],[],[],-7,10,[],options);
# 得到 a=-0.6667,b=3.6667

solve 解方程(组)

# 解方程
syms x;    #定义x为符号变量
eq=x^2+2*x+1;
s=solve(eq,x);

# 解方程组
syms x,y;
eq1 = x+2*y-8;
eq2 = 3*x+5*y-4;
s=solve(eq1,eq2,x,y);
# 得到 s.x =-32,   s.y=20

文章标题:Matlab学习

本文作者:Echo

发布时间:2020-12-15, 09:36:27

最后更新:2021-06-24, 15:20:20

原始链接:http://dmzecho.github.io/2020/12/15/Matlab%E5%AD%A6%E4%B9%A0/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

目录