2014-10-11 27 views
-1

假設我想繪製圖像類似如下:如何在matlab中繪製具有特定半徑和角度的重複直線?

當像素值被改進,以0爲黑色和白色1. 這些線被繪製具有特定半徑和角度

現在我創建一個80 x 160矩陣 texturematrix = 0(80,160);

然後我想根據行條件 將特定元素更改爲1,但是我如何使它們以相互之間的特定距離有效地重複? 非常感謝大家!

回答

0

這可能不是你所尋找的,但產生這樣的圖像可以通過繪製一組線來完成,如下所示:

% 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

相關問題