【问题标题】:Plot equal-spaced points within a square (n x n)在正方形 (n x n) 内绘制等距点
【发布时间】:2016-07-13 15:44:19
【问题描述】:

如何在 matlab 中绘制正方形的等距点。如下图

                          . . . .
                          . . . .
                          . . . .
                          . . . .

下图是一个 4x4 尺寸的正方形。我想引用每个点并存储在变量 [Point(i).xcord, Point(i).ycord] 中并绘制如下图:

For i=1:1:16
Point(i).xcord = <What expression goes here>
Point(i).ycord = <what expression goes here>
plot(Point(i).xcord, Point(i).ycord)

为了得到如上所示的网格形式的输出,谁能解释一下这样做的简单方法。

【问题讨论】:

  • 请不要添加无故删除的标签。本题与部署或稀疏矩阵无关(使用前请阅读标签说明)。

标签: matlab multidimensional-array matlab-figure


【解决方案1】:

你可以使用ndgrid如下:

N = 4; % Square size
[xcord, ycord] = ndgrid(1:N); % generate all combinations. Gives two matrices
plot(xcord(:), ycord(:), '.') % plot all points at once
axis([0 N+1 0 N+1]) % set axis limits
axis square % make actual sizes of both axes equal

xcordycord 是包含点坐标的矩阵。这比在代码中使用结构数组要快。您可以将它们编入索引,例如xcord(2,3)

如果需要转成struct数组,使用

Point = struct('xcord', num2cell(xcord(:)), 'ycord', num2cell(ycord(:)));

【讨论】:

  • 有效!请问,使用问题中显示的结构会是什么样子?在几个 wsn 协议中,传感器节点都是以这种方式引用的。谢谢路易斯!
  • @Abdulhameed 我已经添加了一行来进行转换,请查看编辑后的答案
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-04
  • 2022-11-02
  • 2012-09-23
  • 2016-04-08
  • 2021-06-05
相关资源
最近更新 更多