2016-08-14 14 views
0

Я хотел бы построить несколько кругов с центрами, которые уже определены ранее.Построение нескольких кругов

Таким образом, у меня есть этот код, который использует центроиды как центры кругов, но я получаю ошибку: «Ошибка использования + Матричные измерения должны совпадать».

r = 4; 
cen_x = centroid(:,1); 
cen_y = centroid(:,2); 
th = 0:pi/50:2*pi; 
xunit = r * cos(th) + cen_x; 
yunit = r * sin(th) + cen_y; 
hold on 
h = plot(xunit, yunit); 

Любая помощь?

ответ

0

Вы пытаетесь добавить cos(th) и cen_x вместе и их размеры не совпадают. Вам нужно будет использовать bsxfun, чтобы размеры были правильно переданы.

xunit = bsxfun(@plus, cen_x, r * cos(th)).'; 
yunit = bsxfun(@plus, cen_y, r * sin(th)).'; 

plot(xunit, yunit) 

Вы также можете использовать rectangle рисовать свои круги для вас. Вы также можете указать FaceColor, чтобы заполнить их.

positions = [centroid - (r/2), r + zeros(size(centroid))]; 

for k = 1:size(positions, 1) 
    rectangle('Position', positions(k,:), 'Curvature', [1 1], 'FaceColor', 'r'); 
end 
+0

Прекрасно сделано. Мне любопытно, можете ли вы затем использовать функцию 'imfill' для заполнения этих кругов? – Idrawthings

+0

Большое спасибо! – Idrawthings