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

效果如下:

 

 

如果需要在平面上绘制一条分界线(题目要求的是让因变量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');

 二、绘制二维曲线

就是用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. 公式太长如何分行写

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

 

  • 13
    点赞
  • 63
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值