Matlab绘图介绍
强大的绘图功能是Matlab的特点之一,Matlab提供了一系列的绘图函数,用户不需要过多的考虑绘图的细节,只需要给出一些基本参数就能得到所需图形,这类函数称为高层绘图函数。此外,Matlab还提供了直接对图形句柄进行操作的低层绘图操作。这类操作将图形的每个图形元素(如坐标轴、曲线、文字等)看做一个独立的对象,系统给每个对象分配一个句柄,可以通过句柄对该图形元素进行操作,而不影响其他部分。
Matlab绘制特殊图形
1. 绘制极坐标图
说明:使用polarplot函数绘制极坐标图,每组数据表示一条闭合曲线,共有20条曲线构成20条封闭同心曲线。
t = linspace(0,2*pi,500);
y = 1+0.3*sin(20*t)+0.1*sin(30*t)+0.1*sin(40*t);
polarplot(t,y,t,1.1*y,t,1.2*y,t,1.3*y,t,1.4*y,t,1.5*y,t,1.6*y,t,1.7*y,t,1.8*y,t,1.9*y,...
t,2.0*y,t,2.1*y,t,2.2*y,t,2.3*y,t,2.4*y,t,2.5*y,t,2.6*y,t,2.7*y,t,2.8*y,t,2.9*y,'linewidth',1.5);
2. 单条曲线绘制分段函数(反比例函数y=1/x)
说明:反比例函数在x接近于0时,趋近于奇异(1/0 趋近于无穷大),使用nan非数对图形进行镂空,可以实现一条曲线绘制y=1/x的整个定义域。
x = linspace(-3,3,500);
f = @(x) 1./x;
y = f(x);
for ii = 1:length(x)
if abs(x(ii))<0.03
x(ii) = nan;
y(ii) = nan;
end
end
plot(x,y)
legend('y=1/x')
3. 正方体内绘制随机分布的颜色片图
说明: 使用plot3绘制正方体12条边,使用fill3函数绘制颜色片,颜色片位置和填充颜色随机生成。
a = 20;
b = 20;
c = 20;
A1 = [0 0 0
a 0 0
a b 0
0 b 0
0 0 0];
A2 = [0 0 c
a 0 c
a b c
0 b c
0 0 c];
A3 = [0 0 0
0 0 c
0 b c
0 b 0
0 0 0];
A4 = [a 0 0
a 0 c
a b c
a b 0
a 0 0];
% 绘图
figure
hold on
plot3(A1(:,1),A1(:,2),A1(:,3),'k');
plot3(A2(:,1),A2(:,2),A2(:,3),'k');
plot3(A3(:,1),A3(:,2),A3(:,3),'k');
plot3(A4(:,1),A4(:,2),A4(:,3),'k');
view(3)
XYZ0 = [0 0 0
1 0 0
1 0 1
0 0 1];
for ii = 1:100
p = [rand*(a-2) rand*(b-2) rand*(c-2)]+1; % 球心
X2= p(1) + XYZ0(:,1);
Y2 = p(2) + XYZ0(:,2);
Z2 = p(3) + XYZ0(:,3);
ColorSpec = rand(1,3);
fill3( X2,Y2,Z2,ColorSpec )
end
4. 在大圆内随机生成若干互不相交的小圆
说明:先绘制大圆,在大圆内随机生成小圆圆心,判断小圆圆心和其它小圆的距离,如果小圆圆心距离小于直径,说明小圆相交,舍去该小圆。
tic
X = [];
Y = [];
n = 0;
while n < 1000
r = rand * (750-5);
theta = rand * 2*pi;
x0 = r*cos(theta);
y0 = r*sin(theta);
s = min( (x0-X).^2 + (y0-Y).^2 ); % 最小圆心距离
if s < 10^2
continue;
else
X = [X;x0]; % 圆心坐标集合
Y = [Y;y0];
n = n +1 % 点数
end
end
toc
alpha = linspace(0,2*pi,100);
x = 5*cos(alpha);
y = 5*sin(alpha);
figure
plot( 150*x,150*y,'r' )
hold on
for ii = 1:n
x0 = X(ii);
y0 = Y(ii);
plot(x0+x,y0+y,'k')
end
5. 在长方体内随机生成若干球体
说明:patch函数绘制长方体和球体表面,并可填充颜色。
x = 100;
y = 80;
z = 50;
theta = linspace(0,2*pi,50);
phi = linspace(0,2*pi,50);
[theta,phi] = meshgrid(theta,phi);
r = 2;
X0 = r*cos(phi).*cos(theta);
Y0 = r*cos(phi).*sin(theta);
Z0 = r*sin(phi);
% 绘图
X = [0 x x 0
0 x x 0
0 0 0 0
x x x x
0 x x 0]';
Y = [0 0 y y
0 0 y y
0 y y 0
0 y y 0
y y y y]';
Z = [0 0 0 0
z z z z
0 0 z z
0 0 z z
0 0 z z ]';
figure
patch(X,Y,Z,'r');
view(3)
hold on
for ii = 1:50
p = [rand*(100-4*r) rand*(80-4*r) rand*(50-4*r)]+2*r; % 球心
X2= p(1) + X0;
Y2 = p(2) + Y0;
Z2 = p(3) + Z0;
patch( X2,Y2,Z2,'y' )
end
6. 绘制圆柱体与球体曲面相交,并绘制相交曲线
说明: mesh函数绘制曲面图,求解方程得到交线参数方程,plot3函数绘制三维交线。
%% 曲面1
t = linspace(0,2*pi,200);
s = linspace(0,2*pi,200);
[t,s] = meshgrid(t,s);
x = 2*cos(t);
y = 2*sin(t).*cos(s);
z = 2*sin(t).*sin(s);
figure
mesh(x,y,z)
%% 曲面2
t2 = linspace(0,2*pi,200);
z2 = linspace(-3,3,200);
[t2,z2] = meshgrid(t2,z2);
x2 = 1 + cos(t2);
y2 = sin(t2);
hold on
mesh(x2,y2,z2)
%% 交线
t3 = linspace(0,2*pi,200);
y3 = sin(t3);
x3 = 1 + cos(t3);
z3 = sqrt(4-2*x3);
plot3(x3,y3,z3,'r','linewidth',5)
hold on
plot3(x3,y3,-z3,'r','linewidth',5)
8. 绘制三维抛物曲面
说明:使用nan非数对图形进行镂空
x = -20:0.1:20;
y = -20:0.1:20;
[X,Y] = meshgrid(x,y);
p = 0.2;
q = 0.1;
Z = X.^2/(2*p) + Y.^2/(2*q);
Z = (Z<=500) .* Z + ((Z>500)-1) ./ ((Z>500)-1); % 图形镂空
mesh(X,Y,Z)
9. 抛物曲面随参数变化形成动画
说明:每个步长内动态更新绘制三维曲面,形成动画效果。
x = linspace(-1,1,20);
y = linspace(-1,1,20);
[X,Y] = meshgrid(x,y);
figure
a = 1;
Z = a.*X.^2 + Y.^2;
h = surf(X,Y,Z);
zlim([0,15])
for a = 1:0.1:10
Z = a.*X.^2 + Y.^2;
set(h,'zdata',Z);
drawnow
pause(0.1)
end
10. 使用不同频率的正弦波合成方波
说明:傅里叶级数,利用不同频率的正弦波合成方波,三角函数项数越多,合成方波越精确。
t=0:0.000001:1;
f1=6*sin(10*pi*t)/pi;
f2=6*sin(10*pi*t)/pi+2*sin(30*pi*t)/pi;
f3=6*sin(10*pi*t)/pi+2*sin(30*pi*t)/pi+6*sin(50*pi*t)/(5*pi);
%% 循环段
N = 10; % 点数
f4 = 0; % 初始值
for ii = 1:N
f4 = f4 + 3*2*sin((2*ii-1)*10*pi*t)/pi/(2*ii-1);
end
figure
subplot(2,2,1),plot(t,f1)
subplot(2,2,2),plot(t,f2)
subplot(2,2,3),plot(t,f3)
subplot(2,2,4),plot(t,f4)
总结
来源:https://blog.csdn.net/MatlabFans_Mfun/article/details/118738103


猜你喜欢
- 本文实例讲述了PHP字典树(Trie树)定义与实现方法。分享给大家供大家参考,具体如下:Trie树的概念(百度的解释):字典树又称单词查找树
- 我们在数据处理,往往不小心,pandas会“主动”加上行和列的名称,我现在就遇到了这个问题。这个是pandas中to_csv生成的数据各种拼
- 一、前言该测试功能是Linux产测软件的一个子功能,主要涉及:140行代码PySide2的Event、信号和槽、QLabel,QWidget
- 写了个简洁的隔行变色代码,支持三种动作变化颜色<!DOCTYPE html PUBLIC "-//W3C//DTD XHTM
- import httplibimport osimport timedef check_http(i):
- 正则表达式,就是用某种模式去匹配一类字符串的一个公式,正则表达式由一些普通字符和一些元字符(metacharacters)组成。普通字符包括
- 读文件:要以读文件的模式打开一个文件对象,使用Python内置的open()函数,传入文件名和标示符:>>> f = op
- 背景大家知道现在python主要有两个大的版本,一个是python2另一个是python3,那么不同的人可能会习惯不同的版本,而python
- 一、粗心导致的语法错误SyntaxError1、input输入报错age=input('请输入你的年龄:')if age&g
- 01直接生成这类方法是利用基本程序软件包numpy的随机数产生方法来生成各类用于聚类算法数据集合,也是自行制作轮子的生成方法。一、基础类型1
- 前言有多种 Python 模块用于隐藏用户输入的密码,其中一个是**maskpass()模块。在 Python 中,借助maskpass()
- 一、前奏在谈回调函数之前,先看下下面两段代码:不妨猜测一下代码的结果。function say (value) {  
- 本文是通过深度学习框架keras来做SQL注入特征识别, 不过虽然用了keras,但是大部分还是普通的神经网络,只是外加了一些规则化、dro
- 每次写博客都是源于纳闷,python解析pcap这么常用的例子网上竟然没有,全是一堆命令行执行的python,能用吗?玩呢?pip安装sca
- 本人初学python是菜鸟级,写的不好勿喷。python爬虫用了比较简单的urllib.parse和requests,把爬来的数据显示在地图
- Django的权限系统很简单,它可以赋予users或groups中的users以权限。Django admin后台就使用了该权限系统,不过也
- 现在网页的设计都讲究整体统一风格,无论是网页的文字、图像,还是浏览器的滚动条都要求颜色和风
- 窗口函数形如:表达式 OVER (PARTITION BY 分组字段 ORDER BY 排序字段)有两个能力:当表达式为 rank() de
- 注意,下述部分主要与DOUBLE和FLOAT列相关,原因在于浮点数的不准确本质。MySQL使用64位十进制数值的精度执行DECIMAL操作,
- 一、场景说明在面试接口自动化时,经常会问,其他接口调用的前提条件是当前用户必须是登录状态,如何处理接口依赖?在此之前我们介绍过session