Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Image 如何在matlab中绘制具有特定半径和角度的重复直线?_Image_Matlab_Plot - Fatal编程技术网

Image 如何在matlab中绘制具有特定半径和角度的重复直线?

Image 如何在matlab中绘制具有特定半径和角度的重复直线?,image,matlab,plot,Image,Matlab,Plot,假设我想画一幅如下所示的图像: 其中,对于黑色,像素值被细化为0,对于1,像素值被细化为白色。 这些线以特定的半径和角度绘制 现在我创建一个80 x 160的矩阵 纹理矩阵=零(80160) 然后我想根据行的条件将特定元素更改为1 但是,我如何使它们以特定的距离重复有效地彼此分开呢? 谢谢大家 这可能不是您想要的,但是生成这样的图像可以通过绘制一组线来完成,如下所示: % grid sizes m = 6; n = 5; % line length and angle len = 1; th

假设我想画一幅如下所示的图像:

其中,对于黑色,像素值被细化为0,对于1,像素值被细化为白色。 这些线以特定的半径和角度绘制

现在我创建一个80 x 160的矩阵 纹理矩阵=零(80160)

然后我想根据行的条件将特定元素更改为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和θ的纹理矩阵。LOL,我是否应该考虑Matlab代码的共同出现来生成这个?@ USS315431- Jan de Gier的代码实际上相当优雅,它确实产生你想要的。但是,如果要指定常量
d
,则可以通过将行(80)和列(160)除以
d
,来确定水平和垂直绘制多少(
m
n
)。无论如何,拉瑞龙有一个很好的解决方案。请注意,
len
必须进行相应的缩放。非常感谢大家的帮助!顺便问一下,从getframe(h)中h是什么?
h
是一个数字句柄。忘了在定义的地方粘贴行,所以我只是更新了答案。您还可以使用
gcf
('get current figure'),类似于
gca
('get current axes')。