-1
假設我想繪製圖像類似如下:如何在matlab中繪製具有特定半徑和角度的重複直線?
當像素值被改進,以0爲黑色和白色1. 這些線被繪製具有特定半徑和角度
現在我創建一個80 x 160矩陣 texturematrix = 0(80,160);
然後我想根據行條件 將特定元素更改爲1,但是我如何使它們以相互之間的特定距離有效地重複? 非常感謝大家!
假設我想繪製圖像類似如下:如何在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