我想使用命令text
键入57个六边形内的数字。我想使用一个循环:
for mm=1:57
text(x(m),y(m),'m')
end
其中x(m)
和y(m)
是文本的坐标。
上面的脚本键入字符串" m"而不是m
的价值。我做错了什么?
答案 0 :(得分:1)
Jubobs告诉你如何做到这一点。使用num2str
功能。 BTW,你的for
循环中的小错字。您的意思是使用mm
:
for mm=1:57
text(x(mm),y(mm),num2str(mm));
end
我甚至决定发布答案的原因是因为你可以在没有循环的情况下进行矢量化,我也想写一个答案。您可以做什么将每个数字放入一个字符数组中,其中每一行代表一个唯一的数字,您可以使用text
同时打印所有数字。
m = sprintfc('%2d', 1:57);
d = reshape([m{:}], 2, 57).';
text(x, y, d);
(未记录的!)函数sprintfc
采用格式化说明符和数组,并创建字符串的单元格数组,其中每个单元格是您提供的数组中每个元素的字符串版本。为了确保字符数组每行具有相同的列数,我确保每个字符串占用2个字符,因此任何小于10的数字在开头都会有一个空格。然后我将字符串的单元格数组转换为字符数组,方法是将单元格数组转换为以逗号分隔的字符串列表,然后将矩阵重新整形为可接受的形式,然后用所有对的方式调用text
x
和y
,m
中的相应标签一起显示在屏幕上。