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 绘制三维平面二维曲线 以及 遇到的问题的主要内容,如果未能解决你的问题,请参考以下文章