【问题标题】:Displaying co-ordinates of points Matlab显示点的坐标 Matlab
【发布时间】:2014-12-01 11:32:38
【问题描述】:

每当我的代码运行时,我想在 30x30 的网格中随机显示点,总共有 10 个点。这 10 个点将绘制在定义为 A1 的 30 x 30 区域中。 x 从 0 到 30,y 从 0 到 30。我想要这 10 个点的坐标

 A1 = 30; % area defined as 30 X 30 grid
N = 10; % 10 tags
% Generate x and y position of tags 

for ii = 1:N
    xtemp = A1*rand(1,1);
    ytemp = A1*rand(1,1);

end

plot (xtemp,ytemp)
grid on

当我运行代码时,我得到了十多个点,我想要的只是图表上的 10 个点以及选择显示的每个随机点的坐标。该代码似乎仅在矩阵不是 (1,1) 时才有效

【问题讨论】:

  • 你不想rand(1,1);rand(1,10); 会给你 10 分 * N 所以你在 for 循环中每次运行都会得到 10 个随机值。
  • 我在测试时使用了 (1,10),但忘记将其恢复为 1x1。我希望绘制 10 个随机点并显示它们的 x,y 坐标。点的范围由 A1 定义

标签: matlab random plot


【解决方案1】:

你不需要循环。它在每次迭代中都做同样的事情,而您只是使用最后一次迭代的结果。

要绘制单个点,请使用'.''o' 等标记。这作为第三个参数传递给plot

A1 = 30;
N = 10;
xtemp = A1*rand(1,N);
ytemp = A1*rand(1,N);
plot(xtemp, ytemp, '.')
grid on
axis([0 A1 0 A1])

添加显示每个点坐标的文本标签:

xoffset = 0;
yoffset = -1;
fsize = 8;
temp_str = mat2cell(num2str([xtemp(:) ytemp(:)], '(%.2f,%.2f)'), ones(1,N));
text(xtemp+xoffset, ytemp+yoffset, temp_str, 'fontsize', fsize)

您可能想要更改格式说明符'(%.2f,%.2f)'xoffsetyoffset 控制标签位置;和fsize 定义字体大小。请注意,某些标签可能部分重叠。您可以使用较小的 fsize 值来减少重叠的机会。

【讨论】:

  • 谢谢你是对的。唯一剩下的就是显示每个所选点的 x,y 坐标。也可以将网格大小固定为 30x30。
  • 对于网格大小:添加axis([0 30 0 30])(参见编辑后的答案)。至于“显示所选每个点的 x,y 坐标”,我不确定您的意思。这就是plot(xtemp, ytemp, '.') 行的作用,对吧?
  • 假设选择了一个坐标为 3,25 的点,我希望将其显示在图表上
  • 我知道可以从图表中读取坐标,但如果每个点的坐标都像附加的标签/标签一样显示出来会更容易
  • 谢谢,这就是我的意思。稍后我将使用这些标签。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-23
  • 1970-01-01
  • 2014-07-20
  • 1970-01-01
  • 2015-06-14
相关资源
最近更新 更多