clc %清除命令行窗口
clear %清空工作区数据
cd %显示或改变工作目录
clf %清除图形窗口
help %打开帮助文档
save %保存内存变量到指定文件
hold %保持图形
close %关闭当前图窗
quit %退出
变量名必须以字母开头,之 后可以是任意的字母、数字或 下划线;
变量名区分字母的大小写;
变量名不超过31个字符。
ans %默认变量
pi %圆周率
inf %无穷大
exp(1) %自然底数e
eps %浮点运算的相对精度
%%数字
1,2,3;%%向量
a=[2 4 6 8];
x=1:2:10;
x=linspace(1,10,10);%%矩阵
a=[2 4;6 8];%%字符串
'hello world'
+ %算数加
- %算数减
* %算数乘
.* %点乘
^ %算数乘方
/ %算数右除
' %矩阵转置
== %等于
abs %模
sqrt %平方根
exp %e指数
sin %正弦函数
%数值
a=3;%向量
b=[1 2 3];
c=[1,2,3];
d=linspace(1,3,3);
e=1:1:3;%矩阵
f=[1,2,3;4,5,6];%字符串
g='hello world';
%后面的是注释
CTRL+R快捷键注释
CTRL+T快捷键取消注释
for 变量=表达式可执行语句1
end
while 表达式可执行语句1
end
if 表达式语句1
else语句2
end
fun1=@(参数1,参数2,...)函数表达式
myfun1=fun1(变量1,变量2)
%example1
fun1=@(x,y)(x.^2+y.^2)
myfun1=fun1(2,3)%example2
x=1:1:10;
y=linspace(10,20,10);%10 11 12 13 14 15 16 17 18 19
fun2=@(x,y)(x.^2+y.^2)
myfun2=fun2(x,y)
%example
function[输出形参表:output1,output2,...,outputn]=函数名(输入形参表:input1,...,inputn)注释说明部分函数体代码部分
end
myfun1=fun1(x,y);function f1=fun1(x1,y1) %%一般这个定义函数部分都会放在这个程序的最下面f1=x1.^2+y1.^2;
end
figure | 创建一个图形窗口 |
close all | 关闭打开的matlab文件 |
hold on | 保持当前轴及图形不变 |
grid on | 显示当前坐标区的主网格线 |
plot(x,y) | 创建x-y的二维线图 |
polarplot(theta,rho) | 在极坐标中绘图 |
plot3(x,y,z) | plot(x,y)的三维拓展 |
plot(x1,y1;x2,y2...) | 绘制多条曲线 |
%example
clc;%%清除命令行窗口
clf;%%清除图形窗口
clear;%%清除工作区数据
close;%%清除打开的matlab文件
%创建x,y变量
x=linspace(-pi,pi);
y=cos(x);
plot(x,y);
figure
polarplot(x,y)
plot(x,y,s) s为单引号标记的字符串,用来设 置所画数据点的类型、大小、颜色 以及数据点之间连线的属性。
'r' | red | '-' | 实线 | 'o' | 圆圈 |
'g' | green | '--' | 虚线 | '+' | 加号 |
'b' | blue | ':' | 点线 | '*' | 星号 |
'k' | black | '-.' | 点划线 | '.' | 点 |
LineWidth | 线宽 |
%example
clc;%%清除命令行窗口
clf;%%清除图形窗口
clear;%%清除工作区数据
close;%%清除打开的matlab文件
% x=linspace(-pi,pi);
% y=cos(x);
% plot(x,y);
% figure
% polarplot(x,y)
clc;
clf;
clear;
close;
x=linspace(-pi,pi);
y=cos(x);
%%plot(x,y,'r-o',LineWidth=0.5);
plot(x,y,'r-o','LineWidth',0.5);
xlabel/ylabel | 坐标轴标签 |
xlim/ylim | 坐标轴范围调整 |
官网中的Axes属性文档
%example1
%绘图
clc;%%清除命令行窗口
clf;%%清除图形窗口
clear;%%清除工作区数据
close;%%清除打开的matlab文件
x=linspace(-pi,pi);
y=cos(x);
%%plot(x,y,'r-o',LineWidth=0.5);
plot(x,y,'r-o','LineWidth',0.5);
%修改Axes属性
ax=gca;%%获取图形信息
ax.FontSize=12;%%字体大小
ax.TickDir='out';%% 刻度线方向
ax.TickLength=[0.02 0.02];%%刻度线长度
ax.YLim=[-2 2];%%刻度范围
%example2
%绘图
clc;%%清除命令行窗口
clf;%%清除图形窗口
clear;%%清除工作区数据
close;%%清除打开的matlab文件
x=linspace(-pi,pi);
y=cos(x);
%%plot(x,y,'r-o',LineWidth=2);
plot(x,y,'r-o','LineWidth',2);
%坐标轴
xlabel('x','FontSize',18,'FontWeight','bold');
ylabel('y','FontSize',18,'FontWeight','bold');
%set实现图形对象属性
set(gca,'Fontsize',18,'Fontweight','bold','Position',[0.1 0.16 0.71 0.8]);
set(gca,'LineWidth',3,'Tickdir','in','TickLength',[0.0215,0.015],'YMinorTick','off','XMinorTick','off');
%坐标轴范围
xlim([-pi pi]);
ylim([-1 1]);
半对数坐标系 | |
semilogx(x,y) | x轴以10为基数的对数刻度 |
semilogy(x,y) | y轴以10为基数的对数刻度 |
双对数坐标系 | |
loglog(x,y) | x,y轴以10为基数的对数刻度 |
%example
clc;%%清除命令行窗口
clf;%%清除图形窗口
clear;%%清除工作区数据
close;%%清除打开的matlab文件
x=0:1:1000;
y=0:10:1e4;
subplot(2,2,1);
semilogy(x,y);
subplot(2,2,2);
semilogx(x,y);
subplot(2,2,[3,4]);
loglog(x,y)
hold on
plot(x1,y1,x2,y2,x3,y3...)
%example
%绘图
clc;%%清除命令行窗口
clf;%%清除图形窗口
clear;%%清除工作区数据
close;%%清除打开的matlab文件
x1=linspace(-pi,pi);
y1=cos(x1);
%%plot(x,y,'r-o',LineWidth=2);
plot(x1,y1,'r-o','LineWidth',2);
%坐标轴
xlabel('x','FontSize',18,'FontWeight','bold');
ylabel('y','FontSize',18,'FontWeight','bold');
%set实现图形对象属性
set(gca,'Fontsize',18,'Fontweight','bold','Position',[0.1 0.16 0.71 0.8]);
set(gca,'LineWidth',3,'Tickdir','in','TickLength',[0.0215,0.015],'YMinorTick','off','XMinorTick','off');
%坐标轴范围
xlim([-pi pi]);
ylim([-1 1]);hold on;%%保持图像不变x2=linspace(-pi,pi);
y2=sin(x2);
%%plot(x,y,'b--*',LineWidth=2);
plot(x2,y2,'b--*','LineWidth',2);
%坐标轴
xlabel('x','FontSize',18,'FontWeight','bold');
ylabel('y','FontSize',18,'FontWeight','bold');
%set实现图形对象属性
set(gca,'Fontsize',18,'Fontweight','bold','Position',[0.1 0.16 0.71 0.8]);
set(gca,'LineWidth',3,'Tickdir','in','TickLength',[0.0215,0.015],'YMinorTick','off','XMinorTick','off');
%坐标轴范围
xlim([-pi pi]);
ylim([-1 1]);
legend('cosx','sinx')%%多线条最好有图例说明一下
%该代码生成的图形和上图一样,最大的不同在于双线条的画法不同
%绘图
clc;%%清除命令行窗口
clf;%%清除图形窗口
clear;%%清除工作区数据
close;%%清除打开的matlab文件
x1=linspace(-pi,pi);
y1=cos(x1);
x2=linspace(-pi,pi);
y2=sin(x2);
plot(x1,y1,'r-o',x2,y2,'b--*',LineWidth=2);
%坐标轴
xlabel('x','FontSize',18,'FontWeight','bold');
ylabel('y','FontSize',18,'FontWeight','bold');
%set实现图形对象属性
set(gca,'Fontsize',18,'Fontweight','bold','Position',[0.1 0.16 0.71 0.8]);
set(gca,'LineWidth',3,'Tickdir','in','TickLength',[0.0215,0.015],'YMinorTick','off','XMinorTick','off');
%坐标轴范围
xlim([-pi pi]);
ylim([-1 1]);
legend('cosx','sinx')%%多线条最好有图例说明一下
yyaxis left
yyaxis right
%example
%绘图
clc;%%清除命令行窗口
clf;%%清除图形窗口
clear;%%清除工作区数据
close;%%清除打开的matlab文件
x1=linspace(-pi,pi);
y1=cos(x1);
colororder({'b','r'});%设置坐标轴颜色
yyaxis left;
%%plot(x,y,'r-o',LineWidth=2);
plot(x1,y1,'r-o','LineWidth',2);
%坐标轴
xlabel('x','FontSize',18,'FontWeight','bold');
ylabel('y','FontSize',18,'FontWeight','bold');
%set实现图形对象属性
set(gca,'Fontsize',18,'Fontweight','bold','Position',[0.1 0.16 0.71 0.8]);
set(gca,'LineWidth',3,'Tickdir','in','TickLength',[0.0215,0.015],'YMinorTick','off','XMinorTick','off');
%坐标轴范围
xlim([-pi pi]);
ylim([-1 1]);hold on;%%保持图像不变yyaxis right;
x2=linspace(-pi,pi);
y2=sin(x2);
%%plot(x,y,'b--*',LineWidth=2);
plot(x2,y2,'b--*','LineWidth',2);
%坐标轴
xlabel('x','FontSize',18,'FontWeight','bold');
ylabel('y','FontSize',18,'FontWeight','bold');
%set实现图形对象属性
set(gca,'Fontsize',18,'Fontweight','bold','Position',[0.1 0.16 0.71 0.8]);
set(gca,'LineWidth',3,'Tickdir','in','TickLength',[0.0215,0.015],'YMinorTick','off','XMinorTick','off');
%坐标轴范围
xlim([-pi pi]);
ylim([-1 1]);
legend('cosx','sinx')%%多线条最好有图例说明一下
常用:subplot(m,n,number)将当前窗口分割成mxn个视图区域 ,number表示第几分块
%example
%绘图
clc;%%清除命令行窗口
clf;%%清除图形窗口
clear;%%清除工作区数据
close;%%清除打开的matlab文件
x=linspace(-pi,pi);
y1=cos(x);
y2=sin(x);subplot(1,2,1)
%%plot(x,y,'r-o',LineWidth=2);
plot(x,y1,'r-o','LineWidth',2);subplot(1,2,2)
%%plot(x,y,'b--*',LineWidth=2);
plot(x,y2,'b--*','LineWidth',2);
不常用:tiledlayout(m,n) 将当前窗口分割成mxn个视图区域 nexttile 创建一个坐标区对象,再将其放 入当前图形窗口中的分块图布局 的下一个空图块中
%绘图
clc;%%清除命令行窗口
clf;%%清除图形窗口
clear;%%清除工作区数据
close;%%清除打开的matlab文件
x=linspace(-pi,pi);
y1=cos(x);
y2=sin(x);figure;
tiledlayout(2,2);%%%在当前窗口布局为2*2的视图区域
nexttile%在第一个图块中创建一个坐标区对象
%%plot(x,y,'r-o',LineWidth=2);
plot(x,y1,'r-o','LineWidth',2);
nexttile%在第二个图块中创建一个坐标区对象
%%plot(x,y,'b--*',LineWidth=2);
plot(x,y2,'b--*','LineWidth',2);
nexttile([1 2])创建第三给图块,占据1行2列的坐标区
plot(x,y1,x,y2)
二元函数z=f(x,y)
imagesc(x,y,Z)
pcolor(x,y,Z)
%imagesc
%绘图
clc;%%清除命令行窗口
clf;%%清除图形窗口
clear;%%清除工作区数据
close;%%清除打开的matlab文件
x=linspace(-4,4,100);%%定义俩个相同的向量x,y
y=x;[X,Y]=meshgrid(x,y);%%%基于向量下x,y创建二维网格数据矩阵X,Y
Z=X.*exp(-X.^2-Y.^2);%%%使用函数表达式定义矩阵z
imagesc(x,y,Z)
xlabel('x');
ylabel('y');
colormap jet %%%设置当前颜色图
colorbar('FontSize',12);%%%显示色阶的颜色栏
clim([-1,1]);%%颜色栏的取值范围c=colorbar;
c.Label.String='Z';%%给颜色栏添加文字标注
c.Label.FontSize=12;
%pcolor
%绘图
clc;%%清除命令行窗口
clf;%%清除图形窗口
clear;%%清除工作区数据
close;%%清除打开的matlab文件
x=linspace(-4,4,100);%%定义俩个相同的向量x,y
y=x;[X,Y]=meshgrid(x,y);%%%基于向量下x,y创建二维网格数据矩阵X,Y
Z=X.*exp(-X.^2-Y.^2);%%%使用函数表达式定义矩阵z
pcolor(x,y,Z)
xlabel('x');
ylabel('y');
colormap jet %%%设置当前颜色图
colorbar('FontSize',12);%%%显示色阶的颜色栏
clim([-1,1]);%%颜色栏的取值范围c=colorbar;
c.Label.String='Z';%%给颜色栏添加文字标注
c.Label.FontSize=12;
bar(x,y) | 竖直条形图 | pie(x,y) | 饼图 |
barh(x,y) | 水平条形图 | histogram | 柱状图 |
area(x,y) | 面积图 |
%绘图
clc;%%清除命令行窗口
clf;%%清除图形窗口
clear;%%清除工作区数据
close;%%清除打开的matlab文件
y=randn(20,1); %%创建正态分布的随机数矩阵y
tiledlayout(2,2);
%%%bar函数绘制条形图
nexttile;
bar(y,1,'r');%%1表示条形图的宽度,r表示颜色
title('条形图');
%%%area函数绘制面积图
nexttile;
area(y,'LineStyle',':');%%设置线宽和线型
title('面积图');
%%%pie函数绘制饼图
nexttile;
pie(y);
title('饼图');
%%%histogram函数绘制柱状图
nexttile;
histogram(y,10,'FaceColor','r');%%数字10指定bin数目
title('柱状图');
errorbar(x,y,err) | 误差棒图 |
stem(x,y) | 火柴杆图 |
stairs(x,y) | 阶梯图 |
%绘图
clc;%%清除命令行窗口
clf;%%清除图形窗口
clear;%%清除工作区数据
close;%%清除打开的matlab文件
x=[93.3 93.1 94.7 90.1 95.6 90.0 94.7];
y=[85.6 94.9 96.2 95.1 95.8 96.3 94.1];
e=abs(x-y);
tiledlayout(2,2);
nexttile;
errorbar(y,e);
title('误差棒图');
x=-2:0.1:2;
y=exp(x);
z=exp(-x);
nexttile;
stem(x,y);
title('二维火柴图');
nexttile;
stem3(x,y,z);
title('三维火柴图');
nexttile;
stairs(x,y);
title('阶梯图');
compass(U,V) | 罗盘图 |
feather(U,V) | 羽毛图 |
quiver(U,V) | 箭头图/矢量图 |
%绘图
clc;%%清除命令行窗口
clf;%%清除图形窗口
clear;%%清除工作区数据
close;%%清除打开的matlab文件
x=linspace(-4,4,50);%%定义俩个相同的向量x,y
y=x;[X,Y]=meshgrid(x,y);%%%基于向量下x,y创建二维网格数据矩阵X,Y
Z=X.*exp(-X.^2-Y.^2);%%%使用函数表达式定义矩阵z
[U,V]=gradient(Z,2,2);
contour(X,Y,Z);
hold on;
quiver(X,Y,U,V);
axis image
xlim([-2 2]);
ylim([-2 2]);
%绘图
clc;%%清除命令行窗口
clf;%%清除图形窗口
clear;%%清除工作区数据
close;%%清除打开的matlab文件
x=-pi:pi/10:pi;%%定义俩个相同的向量x,y
y=sin(x);
subplot(1,2,1);
compass(x,y);
title('罗盘图');
subplot(1,2,2);
feather(x,y);
title('羽毛图')
三维绘图
plot3(x,y,z) | plot的三维拓展 |
mesh(X,Y,Z) | 绘制三维网格图 |
surf(X,Y,Z) | 绘制三维曲面图 |
contour(X,Y,Z) | 绘制二维等值线 |
contourf(X,Y,Z) | 绘制二维等值线 |
%绘图
clc;%%清除命令行窗口
clf;%%清除图形窗口
clear;%%清除工作区数据
close;%%清除打开的matlab文件
x=linspace(-4,4,50);%%定义俩个相同的向量x,y
y=x;[X,Y]=meshgrid(x,y);%%%基于向量下x,y创建二维网格数据矩阵X,Y
Z=X.*exp(-X.^2-Y.^2);%%%使用函数表达式定义矩阵z
[U,V]=gradient(Z,2,2);%%%设置矩阵梯度tiledlayout(3,2)
nexttile
mesh(X,Y,Z);
title('网格图');
xlim([-2 2]);
ylim([-2 2]);nexttile
surf(X,Y,Z);
title('曲面图');
xlim([-2 2]);
ylim([-2 2]);nexttile
contour(X,Y,Z,20);
title('二维等值线图');
xlim([-2 2]);
ylim([-2 2]);nexttile
contourf(X,Y,Z,20);
title('填充二维等值线图');
xlim([-2 2]);
ylim([-2 2]);nexttile
quiver(X,Y,U,V);
title('梯度图');
xlim([-2 2]);
ylim([-2 2]);nexttile
streamslice(X,Y,U,V);
title('密度梯度流线图');
xlim([-2 2]);
ylim([-2 2]);
poly2sym | 使用系数向量表示;输出结果为字符 |
roots | 求多项式的根 |
fzero(fun,x0) | 函数找到x0附近函数fun(x)的零点 |
%poly2sym 使用系数向量表示;poly2sym输出结果为字符
clc;%%清除命令行窗口
clf;%%清除图形窗口
clear;%%清除工作区数据
close;%%清除打开的matlab文件
p1=[1 2 3];
p2=[2 3 1];
p3=[1 1 2 3 4 5];
poly2sym(p1)
poly2sym(p2)
poly2sym(p3)
%roots求解多项式的根
clc;%%清除命令行窗口
clf;%%清除图形窗口
clear;%%清除工作区数据
close;%%清除打开的matlab文件
p1=[1 2 3];
p2=[2 3 1];
p3=[1 1 2 3 4 5];
r1=roots(p1);
r2=roots(p2);
r3=roots(p3);
%fzero函数找到x0附近函数fun(x)的零点
clc;%%清除命令行窗口
clf;%%清除图形窗口
clear;%%清除工作区数据
close;%%清除打开的matlab文件
myfun=@(x,a)cos(a*x);
a=2;
fun=@(x)myfun(x,a);
x0=fzero(fun,0.1);
x=fzero(fun,0.1);
龙格-库塔方法(Runge-Kutta) :基本求解器选择 ode45 适用于大多数 ODE 问题,一般情况下应作为您的首选求解器。但对于精 度要求更宽松或更严格的问题而言,ode23、ode78、ode89 和 ode113 可能比 ode45 更加高效。
非刚性求解器 | 刚性求解器 | ||
ode45 | 四阶、五阶R-K函数求解非线性微分方程的中阶方法 | ode15s | 求解刚性微分方程和 DAE 变阶方法,精度较低 |
ode23 | 二阶、三阶R-K函数 求解非线性微分方程的低阶方法 | ode23s | 求解刚性微分方程 低阶方法,速度较快 |
ode78 | 求解非刚性微分方程 - 高阶方法 | ode23t | 求解中等难度的刚性问题 |
ode89 | 求解非刚性微分方程 - 高阶方法 | oder23tb | 求解难度较大的问题 |
ode113 | 求解非刚性微分方程 - 变阶方法 |
例如:利用R-K方法求解微分方程dy/dt=2t,其中0 利用R-K方法求解微分方程,其中. 当,将方程转换成一阶常微分方程:和 数值积分官网 int(f) 求函数f的原函数 int(f,a,b) 求函数f在[a b]上的定积分 (解析解) integral(f,a,b) 求函数f在[a b]上的定积分 (数值解) integra2l(f,xmin,xmax,ymin,ymax) 求函数f的二重积分 trapz 求离散数据的数值积分 安装数据拟合器---Curve Fitting Toolbox polyfit(x,y,n) 用二乘法对已知数据x,y进行拟合,以 求得n阶多项式系数向量 linefit(x,y) 最小二乘法直线拟合 %绘图
clc;%%清除命令行窗口
clf;%%清除图形窗口
clear;%%清除工作区数据
close;%%清除打开的matlab文件
tspan=[0 5];%积分区间定义
y0=0;%初始条件
[t,y]=ode45(@(t,y)2*t,tspan,y0);%%%计算微分方程在指定积分区间的积分
plot(t,y,'-o');
xlabel('t');
ylabel('y');%绘图
clc;%%清除命令行窗口
clf;%%清除图形窗口
clear;%%清除工作区数据
close;%%清除打开的matlab文件
tspan=[0,20];
mu=1;
y0=[2 0];
[t,y]=ode45(@(t,y)fun(t,y),tspan,y0);
plot(t,y(:,1),'ro-',t,y(:,2),'k:p','LineWidth',2);
function dydt=fun(~,y)dydt=zeros(2,1); dydt(1)=y(2);dydt(2)=(1-y(1).^2).*y(2)-y(1);
end数值积分
clc;%%清除命令行窗口
clf;%%清除图形窗口
clear;%%清除工作区数据
close;%%清除打开的matlab文件
%普通数值积分
fun1=@(x)exp(-x.^2).*log(x).^2;
q1=integral(fun1,0,Inf)
%参数化函数数值积分
fun2 = @(x,c) 1./(x.^3-2*x-c);
q2 = integral(@(x) fun2(x,5),0,2)
%积分限为奇异点的数值积分
fun3 = @(x)log(x);
q3 = integral(fun3,0,1,'RelTol',0,'AbsTol',1e-12)
%复函数的围道积分
fun4 = @(z) 1./(2*z-1);
q4 = integral(fun4,0,0,'Waypoints',[1+1i,1-1i])第八部分:数据拟合