Трудно понять, какое сообщение об ошибке приходит с какой попытки, но давайте посмотрим.
У меня нет доступа к Parallel Computing Toolbox , в котором, по-видимому, необходимо использовать цикл для распределенного диапазона drange
, но я предполагаю, что этот цикл может заменить на for i = 0:setsize
для тестирования.
Теперь, начиная с i = 0
, вы пытаетесь получить доступ к x(0)
и y(0)
, что недопустимо ( Индексы нижнего индекса должны быть либо действительными положительными целыми числами, либо логическими ). Кроме того, вы получите 10 значений вместо 9, как вы указали в своем вопросе. Итак, начнем с i = 1
.
Чтобы сохранить все 9 пар x
и y
, ваш circleposition
должен быть массивом 9 x 2
. Итак, инициализируйте его, например, circleposition = zeros(setsize, 2)
.
Наконец, вам нужно использовать правильное индексирование для хранения [x, y]
в i
-ой строке circleposition
, т.е. circleposition(i, :)
.
Итак, исправленный код (внимание на замененной части drange
) может выглядеть так:
setsize = 9;
r = 340;
cx = 500;
cy = 500;
anglesegment = 2 * pi/setsize;
circleposition = zeros(setsize, 2); % Initialize circleposition appropriately
for i = 1:setsize % Start at i = 1
x = r * cos(i*anglesegment) + cx;
y = r * sin(i*anglesegment) + cy;
circleposition(i, :) = [x, y]; % Correct indexing of the row
end
circleposition % Output
Выходные данные будут:
circleposition =
760.46 718.55
559.04 834.83
330.00 794.45
180.50 616.29
180.50 383.71
330.00 205.55
559.04 165.17
760.46 281.45
840.00 500.00
О второй ошибке ( Ошибка при использовании vertcat
. Размеры сцепляемых матриц не согласованы. ): Я не вижу, где вы вообще использовали вертикальную конкатенацию!?