Построение нескольких кругов

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

Итак, у меня есть этот код, который использует центроиды в качестве центров окружностей, но я получаю сообщение об ошибке: "Ошибка при использовании + Размеры матрицы должны совпадать".

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);

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


person Idrawthings    schedule 14.08.2016    source источник


Ответы (1)


Вы пытаетесь сложить вместе 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
person Suever    schedule 14.08.2016
comment
Хорошо сделано. Мне любопытно, можете ли вы использовать функцию imfill, чтобы заполнить эти круги? - person Idrawthings; 14.08.2016