如何在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); 
+0

实际上我想生成一个纹理矩阵不同的r',d和theta。大声笑我应该考虑共同发生的matlab代码来产生这个? – 2014-10-11 15:42:24

+0

@ user3154371 - Jan de Gier的代码实际上非常优雅,它确实会生成你想要的。然而,如果你想指定常量'd',你可以通过将行(80)和列(160)除以'd'来确定水平和垂直绘制的数量('m'和'n') 。 – rayryeng 2014-10-11 16:03:33

+1

对不起,忘了'd'。无论如何,raryreng有一个很好的解决方案。请注意,'len'必须相应地缩放。 – MeMyselfAndI 2014-10-11 16:11:13