利用Matlab绘制各类特殊图形的实例代码
2021-07-15 14:53:18
作者:MatlabFans_Mfun
作为一个功能强大的工具软件,Matlab具有很强的图形处理功能,提供了大量的二维、三 维图形函数,这篇文章主要给大家介绍了关于如何利用Matlab绘制各类特殊图形的相关资料,需要的朋友可以参考下
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;
plot(x,y)
legend('y=1/x')
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 )
4. 在大圆内随机生成若干互不相交的小圆
说明:先绘制大圆,在大圆内随机生成小圆圆心,判断小圆圆心和其它小圆的距离,如果小圆圆心距离小于直径,说明小圆相交,舍去该小圆。
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;
X = [X;x0]; % 圆心坐标集合
Y = [Y;y0];
n = n +1 % 点数
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')
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' )
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)
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);
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)
到此这篇关于利用Matlab绘制各类特殊图形的文章就介绍到这了,更多相关Matlab绘制特殊图形内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
您可能感兴趣的文章:
详解Python 合并字典
2021-12-12
学习python 的while循环嵌套
2021-12-12
Python MySQL数据库基本操作及项目示例详解
2021-12-12
Python如何实现逐行读取文本文件
2021-12-12
详解Python中的List 2
2021-12-12
详解Python中的List
2021-12-12
Python循环语句介绍
2021-12-12
美国设下计谋,用娘炮文化重塑日本,已影响至中国
2021-11-19
时空伴随者是什么意思?时空伴随者介绍
2021-11-09
工信部称网盘企业免费用户最低速率应满足基本下载需求,天翼云盘回应:坚决支持,始终
2021-11-05
2022年放假安排出炉:五一连休5天 2022年所有节日一览表
2021-10-26
电脑版
-
返回首页
2006-2023 脚本之家 JB51.Net , All Rights Reserved.
苏ICP备14036222号