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

Posted 玛丽莲茼蒿

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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-\\sqrtx^2+(y-1)^2$','interpreter','latex','FontWeight','bold');

效果如下:

 

 

如果需要在平面上绘制一条分界线(题目要求的是让因变量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-\\sqrtx^2+(y-1)^2$','interpreter','latex','FontWeight','bold');

 二、绘制二维曲线

就是用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格式,比如

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

 

 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');

 

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; 

 

4. 公式太长如何分行写

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

 

以上是关于Matlab 绘制三维平面二维曲线 以及 遇到的问题的主要内容,如果未能解决你的问题,请参考以下文章

如何在matlab同一个图形上绘制多条曲线

备战数学建模4-MATLAB绘制三维图形

matlab如何画三维向量场

MATLAB 绘图函数总结

MATLAB 绘图函数总结

MATLAB 绘图函数总结