如何在matlab中绘制具有特定半径和角度的重复直线?
问题描述:
假设我想绘制图像类似如下:如何在matlab中绘制具有特定半径和角度的重复直线?
当像素值被改进,以0为黑色和白色1. 这些线被绘制具有特定半径和角度
现在我创建一个80 x 160矩阵 texturematrix = 0(80,160);
然后我想根据行条件 将特定元素更改为1,但是我如何使它们以相互之间的特定距离有效地重复? 非常感谢大家!
答
这可能不是你所寻找的,但产生这样的图像可以通过绘制一组线来完成,如下所示:
% grid sizes
m = 6;
n = 5;
% line length and angle
len = 1;
theta = .1*pi;
[a,b] = meshgrid(1:m,1:n);
x = reshape([a(:),a(:)+len*cos(theta),nan(numel(a),1)]',[],1);
y = reshape([b(:),b(:)+len*sin(theta),nan(numel(b),1)]',[],1);
h = figure();
plot(x,y,'k', 'LineWidth', 2);
但这已经无关纹理矩阵。所以,我们构造一个所需大小的矩阵:
set(gca, 'position',[0 0 1 1], 'units','normalized', 'YTick',[], 'XTick',[]);
frame = frame2im(getframe(h),[0 0 1 1]);
im = imresize(frame,[80 160]);
M = ~(im(2:end,2:end,1)==255);
实际上我想生成一个纹理矩阵不同的r',d和theta。大声笑我应该考虑共同发生的matlab代码来产生这个? – 2014-10-11 15:42:24
@ user3154371 - Jan de Gier的代码实际上非常优雅,它确实会生成你想要的。然而,如果你想指定常量'd',你可以通过将行(80)和列(160)除以'd'来确定水平和垂直绘制的数量('m'和'n') 。 – rayryeng 2014-10-11 16:03:33
对不起,忘了'd'。无论如何,raryreng有一个很好的解决方案。请注意,'len'必须相应地缩放。 – MeMyselfAndI 2014-10-11 16:11:13