Matlab 绘制三维平面、二维曲线 以及 遇到的问题

一、绘制三维平面(一个因变量两个自变量)

借鉴这篇文章,说的很详细。

 【MATLAB】MATLAB三维曲面绘制【详细教程】_风小新的博客-CSDN博客_matlab三维曲面图

记录一下主要的思路:

 (1)给出两个自变量的范围,可以用linspace函数,也可以直接写i=0:0.1:1这样

(2)这一步很关键,一定要用meshgrid()函数将两个自变量变为矩阵,要不然无法计算因变量

(3)给因变量赋值,也就是用代码去表达公式

(4)直接用mesh函数绘制就完事了

(5)其他具有修饰性意义的功能,比如增加图例,增加x和y轴标注、平面颜色等等上网一搜就能搜到代码。

给出我的例子(可直接运行):

clear;clc; %清除前置数据
%常量定义
ab = 0.10; % αb
bb = 0.20; % βb
bs = 0.22; % βs
tb = 0.35; % tb 
ts = 0.30; % ts 
cta = 1; %就是那个C塔

%曲面数据处理
i = linspace(0,1,50); %设置自变量i的范围 [0,1]
f = linspace(0,1,50); %设置自变量f的范围[0,1]
[I,F] = meshgrid(i,f); %将其i,f轴变为矩阵
CS = 3/8 - I*ab + ab - (4*F+3*bs*bs+10*bs*bb+3*bb*bb)/(12*ts);% 公式



%绘制
Fig = mesh(I,F,CS); % 绘制三维曲面图
hold on;
axis([0,1,0,1]); %坐标范围设置,X轴和Y轴一定要和自变量i和f的范围保持一致!!!Z轴怎么好看怎么设置


L(1) = xlabel('$i$','interpreter','latex','FontSize',15);
L(2) = ylabel('$f$','interpreter','latex','FontSize',15);
L(3) = zlabel('$\Delta CS`$','interpreter','latex','FontSize',15);
% L(4) = title('$z = 1-\sqrt{x^{2}+(y-1)^{2}}$','interpreter','latex','FontWeight','bold');

效果如下:

Matlab 绘制三维平面、二维曲线 以及 遇到的问题_第1张图片 

 

如果需要在平面上绘制一条分界线(题目要求的是让因变量CS=零),需要用到plot3函数,增加功能后的完整代码如下:

clear;clc; %清除前置数据
%常量定义
ab = 0.10; % αb
bb = 0.20; % βb
bs = 0.22; % βs
tb = 0.35; % tb 
ts = 0.30; % ts 
cta = 1; %就是那个C塔

%曲面数据处理
i = linspace(0,1,50); %设置自变量i的范围 [0,1]
f = linspace(0,1,50); %设置自变量f的范围[0,1]
[I,F] = meshgrid(i,f); %将其i,f轴变为矩阵
CS = 3/8 - I*ab + ab - (4*F+3*bs*bs+10*bs*bb+3*bb*bb)/(12*ts);% 公式


%曲线数据处理
f2 = linspace(0,1,50); 
% 0 = 3/8 - i*ab + ab - (4*f+3*bs*bs+10*bs*bb+3*bb*bb)/(12*ts); 原式
i2=(3/8  + ab - (4*f2+3*bs*bs+10*bs*bb+3*bb*bb)/(12*ts))/ab; %原式变形后
cs2 = i2-i2;

%绘制
Fig = mesh(I,F,CS); % 绘制三维曲面图
hold on;
plot3(i2,f2,cs2,'k--'); % 绘制分割线
hold on;
% plot3(0.02,0.11,0.15,'r*'); % 可以绘制某个指定的点
axis([0,1,0,1,-0.5,0.5]); %坐标范围设置,X轴和Y轴一定要和自变量i和f的范围保持一致!!!Z轴怎么好看怎么设置


L(1) = xlabel('$i$','interpreter','latex','FontSize',15);
L(2) = ylabel('$f$','interpreter','latex','FontSize',15);
L(3) = zlabel('$\Delta CS`$','interpreter','latex','FontSize',15);
% L(4) = title('$z = 1-\sqrt{x^{2}+(y-1)^{2}}$','interpreter','latex','FontWeight','bold');

Matlab 绘制三维平面、二维曲线 以及 遇到的问题_第2张图片

 二、绘制二维曲线

就是用plot函数,比较简单。代码贴在了下面的某个问题中。

三、遇到的问题:

 1.xlabel/ylabel函数想要输入希腊数学符号、上角标、下角标

遇到这个问题主要是因为没有学过LaTeX的语法,不知道可以通过转义字符的方式显示希腊字母。

第一个参数就是LaTeX语法,可以表示希腊字母、数学符号、上角标、下角标

MATLAB绘图技巧——支持的TeX字符(希腊字母和数学符号)_ikhui7的博客-CSDN博客_matlab tex

LaTex字符如何输入下标的下标? – MATLAB中文论坛

L(1) = xlabel('$ i $','interpreter','latex','FontSize',15);
L(2) = ylabel('$ \Delta P^{T`} $','interpreter','latex','FontSize',15);

在其他函数中也可以使用LaTeX格式,比如

Matlab 绘制三维平面、二维曲线 以及 遇到的问题_第3张图片

那么一个字母上既有上角标又有下角标该怎么写呢?

Matlab 绘制三维平面、二维曲线 以及 遇到的问题_第4张图片 

 2.如何在二维曲线上画出坐标点

Matlab在曲线上标出坐标点_weixin_41748916的博客-CSDN博客_matlab如何标记数据点坐标

曲线绘制用的plot函数,描点也可以用plot函数,只不过把前两个参数改成固定的坐标值就行了。

给出我的例子:

clear;clc; %清除前置数据
%常量定义
ab = 0.10; % αb
bb = 0.20; % βb
bs = 0.22; % βs
tb = 0.35; % tb 
ts = 0.30; % ts 
cta = 1; %就是那个C塔

% 绘制i和p的二维曲线/直线
i = 0:0.1:1;
p = i*ab + ab -3*tb/2 + bs*((3*bb+bs)/4*ts);
plot(i,p,'b-','DisplayName','\alpha_b=0.10');
hold on;

%绘制因变量∆pT' =0 时的分界点
p= 0;
% p = i*ab + ab -3*tb/2 + bs*((3*bb+bs)/4*ts);
i = (p - ab + 3*tb/2 - bs*((3*bb+bs)/4*ts))/ab;
plot(i,p,'rs');

 Matlab 绘制三维平面、二维曲线 以及 遇到的问题_第5张图片

3. 如何添加图例

matlab怎么增加图例,将图例添加到图- MATLAB & Simulink- MathWorks 中国_weixin_39541600的博客-CSDN博客

给出我用的例子:

clear;clc; %清除前置数据
%常量定义
ab = 0.10; % αb
bb = 0.20; % βb
bs = 0.22; % βs
tb = 0.35; % tb 
ts = 0.30; % ts 
cta = 1; %就是那个C塔

% 绘制i和p的二维曲线/直线
i = 0:0.1:1;
p = i*ab + ab -3*tb/2 + bs*((3*bb+bs)/4*ts);
plot(i,p,'b-','DisplayName','\alpha_b=0.10');
hold on;

%绘制因变量∆pT' =0 时的分界点
%p= 0;
% p = i*ab + ab -3*tb/2 + bs*((3*bb+bs)/4*ts);
%i = (p - ab + 3*tb/2 - bs*((3*bb+bs)/4*ts))/ab;
%plot(i,p,'rs');

%====================ab=0.2=====================
ab = 0.20;
p = i*ab + ab -3*tb/2 + bs*((3*bb+bs)/4*ts);
plot(i,p,'r-*','DisplayName','\alpha_b=0.20');
hold on;
%====================ab=0.3=====================
ab = 0.30;
p = i*ab + ab -3*tb/2 + bs*((3*bb+bs)/4*ts);
plot(i,p,'g-+','DisplayName','\alpha_b=0.30');
hold on;

legend;
%     (这里的代码和LaTeX公式代码完全一致)
L(1) = xlabel('$ i $','interpreter','latex','FontSize',15);
L(2) = ylabel('$ \Delta P^{T`} $','interpreter','latex','FontSize',15);




和绘制 图例有关的就是下面这4句。在每个plot里加入‘DisplayName’以及LaTeX格式的图例。在代码的最后一定要放一个legend

plot(i,p,'b-','DisplayName','\alpha_b=0.10');
......
plot(i,p,'r-*','DisplayName','\alpha_b=0.20');
......
plot(i,p,'g-+','DisplayName','\alpha_b=0.30');

legend; 

 Matlab 绘制三维平面、二维曲线 以及 遇到的问题_第6张图片

4. 公式太长如何分行写

只需要在后面加三个点就行了

 

你可能感兴趣的:(Matlab,matlab,平面,开发语言)