Matlab绘图

记录

Matlab绘图

使用fimplict绘制,y轴对数坐标,fill填充颜色
例如,绘制三条曲线
f1: y = 18 − x . y=18-x. y=18x.
f2: y = 2 1 / 2 x 2 π − arcsin ⁡ 2 ( 0.8 ) . y= \frac{2^{1/2} x^{2}}{\pi - \arcsin^{2}(0.8)}. y=πarcsin2(0.8)21/2x2.
f3: y = 15 ( x − 18 ) x − 1 / 2 . y=15(x-18)x^{-1/2}. y=15(x18)x1/2.

clc;
clear;
close all;
syms x y
% fimplicit绘制隐函数
% f1,红线
f1 = (18-x)-y;  
h1 = fimplicit(f1,[-100 100 0.01 10^5],'r');
hold on;

% f2,黑线
f2 = 2^(1/2)*x^(2)/(pi-asin(0.8)^(2))-y;
% 寻找f1,f2交点,绘制f2
s = solve(f1,f2,x,y);
xk=double(s.x(1));
yk=double(s.y(1));
h2=fimplicit(f2,[xk 100 0.01 10^5],'k');

% f3,蓝线
f3 = 15*(x-18)*x^(-1/2)-y;                     
h3 = fimplicit(f3,[18 100 0.01 10^5],'b');

% 虚线标记f1,f2交点
h4 = fimplicit(x-xk,[-100,100,0.01,yk],'k--');

% 设置格式
set(gca,'yscale','log');
set(gca,'yLim',[0.01 10^5]);
set(gca,'yTicklabel',{'0.01','0.1','1','10','10^2','10^3','10^4','10^5'});
set(gca,'xTick',[-100,-50,0,18,50,100]);
xlabel('x');
ylabel('y');

x1 = h1.XData;
y1 = h1.YData;
x2 = h2.XData;
y2 = h2.YData;
x3 = h3.XData;
y3 = h3.YData;

% 将x1,x2,x3都从小到大排列好,y值也对应
x1 = fliplr(x1);
x2 = fliplr(x2);
x3 = fliplr(x3);
y1 = fliplr(y1);
y2 = fliplr(y2);
y3 = fliplr(y3);

% 根据填充区域关键点确定范围
idx1 = find(x1 >= -100 & x1 < xk);
idx2 = find(x1 >= xk & x1 < 18);
idx3 = find(x2 >= xk & x2 < 100);
idx4 = find(x3 >= 18 & x3 < 100);

s1 = x1(idx1);
s2 = x1(idx2);
s3 = x2(idx3);
s4 = x3(idx4);

t1 = y1(idx1);
t2 = y1(idx2);
t3 = y2(idx3);
t4 = y3(idx4);

% 填充颜色需要是一个闭环
% R1:填充绿色
xFill_1 = [s1, s3, 100, -100];
yFill_1 = [t1, t3, 1e5, 1e5];
F1=fill(xFill_1, yFill_1, 'g');

% R2:填充蓝色
xFill_2 = [s2, s4, fliplr(s3)];
yFill_2 = [t2, t4, fliplr(t3)];
F2=fill(xFill_2, yFill_2, 'b');

% 设置透明度
set(F1,'edgealpha',0,'facealpha',0.3);
set(F2,'edgealpha',0,'facealpha',0.3);

% 图例
legend({'f1','f2','f3'},'Location','southwest');
text(-10,5000,'R1');
text(50,500,'R2');

hold off;

最后的结果

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值