用Matlab绘制星形图形
我必须在matlab中绘制此图:用Matlab绘制星形图形,matlab,matlab-figure,Matlab,Matlab Figure,我必须在matlab中绘制此图: 因此,我编写了以下代码: x=[0.9 1 0.9 -0.9 0.7 0.7 -0.9 0.9]; y=[-1 0 1 -0.5 -0.8 0.8 -0.4 -1]; plot(x,y); 但这给了我: 此方法是否不足以绘制第一个图形…是否有其他简短的方法用于此…我手动尝试过: x = [-0.4 0.6 1 0.6 -0.4 -0.8 -0.8]; y = [-0.9 -0.7 0 0.7 0.9 0.4 -0.4]; x_ = [x,x]; y_
因此,我编写了以下代码:
x=[0.9 1 0.9 -0.9 0.7 0.7 -0.9 0.9];
y=[-1 0 1 -0.5 -0.8 0.8 -0.4 -1];
plot(x,y);
但这给了我:
此方法是否不足以绘制第一个图形…是否有其他简短的方法用于此…我手动尝试过:
x = [-0.4 0.6 1 0.6 -0.4 -0.8 -0.8];
y = [-0.9 -0.7 0 0.7 0.9 0.4 -0.4];
x_ = [x,x];
y_ = [y,y];
figure;
hold on;
for ii=1:numel(x),
scatter(x(ii),y(ii),'ro');
plot([x_(ii),x_(ii+1+1)],[y_(ii),y_(ii+1+1)],'b-');
end
axis([-1 1 -1 1]);
我得到了他的:
在我看来,您似乎想要构造一个,它的特性是所有点与其相邻点的距离相等,并且所有点位于同一个圆上 首先,我们生成所需角度
a
(从x轴到连接原点和所需点的直线测量,请参见)。基于多边形,我们重新排列角度,从而跳过所需数量的点(在下面的代码中,这是通过使用其他repmat
-实现的,但存在许多替代方案)
要将角度转换为平面中的实际点,我们需要正弦和余弦值,然后我们可以绘制点和线。将这些放在一起将生成以下代码,这将生成所需的图形
n = 7;
a = linspace(0,2*pi,n+1);
skip = 1;
b = [repmat(a(1:end-1),1,skip+1) a(end)];
a = b(1:skip+1:end);
figure;
clf;
hold on;
plot(cos(a),sin(a),'b-');
plot(cos(a(1:end-1)),sin(a(1:end-1)),'ro');
axis([-1 1 -1 1])
axis equal
稍微少一点的是像这样计算向量
A
:
a = mod(linspace(0,(skip+1)*2*pi,n+1),(skip+1)*2*pi);
您可以更好地定位数据点
nPoints = 7;
th = linspace(-2*pi, 2*pi, 2*nPoints+1);%// extra point to close the curve
r = 1;
x = r*cos(th);
y = r*sin(th);
scatter( x, y, 'ro' );
hold on;
plot( x(1:2:end), y(1:2:end), 'b-' );
axis equal;
结果为:顺便说一句,此代码适用于任何奇数
npoint
-请尝试;) 谢谢你的回答,但你能解释一下吗:当我删除x=rcos(th)结尾的分号时;y=rsin(th);为什么图形会重复…MATLAB打印不以分号结尾的表达式的值。由于缺少分号,它会再次显示绘图,因此会重复自身。