【问题标题】:MatLab--How would I generate an n-sided shape wher n >= 4MatLab--当 n >= 4 时,我将如何生成 n 边形状
【发布时间】:2013-11-29 17:06:13
【问题描述】:

我是 Matlab 新手,但对编程有点了解。

对于类,我们被要求生成一个矩阵,该矩阵给出二维 n 边形状的顶点,其中 n>=4。然后,生成连接顶点的向量。我们还得到了一个提示:每个段的向量可以通过将从原点绘制的向量添加到两个相邻顶点中的每一个来找到。

我知道如何使用 A = [1 1; 创建矩阵1 2; 2 2; 2 1] 但我不确定如何绘制给定此矩阵或任何其他矩阵的向量。

plot() 函数看起来很有前途,但我不确定如何将它与矩阵一起使用。

感谢您的任何建议。

顺便说一句,我正在使用 Matlab 2011a

【问题讨论】:

  • 请求的形状总是正多边形吗?对于您对函数plot 的关注,如果您调用plot(A(:,1),A(:,2)),它将完成这项工作。我的建议是在矩阵末尾添加第一个点,以便关闭多边形。
  • 感谢大家的帮助。我最终按照 Luis 的建议使用 plot(),因为我不想填充多边形。
  • 如果 Luis 的回答对您有所帮助,您应该通过单击答案左侧的复选标记来接受它。首先,这向所有人表明这个问题已经解决,其次,您接受其答案的人将获得声誉积分(您也可以获得几个)。您可能还想返回并重新审视以前的问题,并在适当的时候接受答案。

标签: matlab vector matrix polygon


【解决方案1】:

我不确定你的矩阵是如何表示你的形状的,但是你可以让形状的 x 坐标成为数组的第一列,然后让 y 坐标成为第二列,例如:

A = [1 1; 1 2; 2 2; 2 1];

x = A(:,1);
y = A(:,2);

fill(x,y,'g');
axis([0 3 0 3]);
axis square;

在您的情况下,从矩阵 A 中绘制一个正方形:

或者构造一些更复杂的东西,比如五边形:

theta = [0:pi/2.5:2*pi];
x = sin(theta);
y = cos(theta);

% your matrix is then:
B(:,1) = x;
B(:,2) = y;
B
figure;fill(x,y,'g');
axis square;

这给出了:

【讨论】:

  • 你领先我一秒!
【解决方案2】:

如果您只想用plot 绘制轮廓(而不是用fill 填充内部),请记住您必须在末尾重复初始点以便折线闭合:

A = [1 1; 1 2; 2 2; 2 1];
B = [A; A(1,:) ]; %// repeat first row at the end
plot(B(:,1),B(:,2))
axis equal %// same scale on both axes
axis([min(x)-.5 max(x)+.5 min(y)-.5 max(y)+.5]) %// larger axes for better display

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-08-21
    • 1970-01-01
    • 2020-10-03
    • 2018-08-13
    • 1970-01-01
    • 1970-01-01
    • 2022-01-22
    • 1970-01-01
    相关资源
    最近更新 更多