我正在循环内生成两个不同的坐标(x, y)
。在我的代码中,我刚刚意识到它正在保存循环中的最后一个变量。但是,我正在尝试保存setsize
变量中的所有迭代。我已经尝试使用以下方法进行保存:
circleposition = [0:length(setsize) x(i),y(i)];
但是,看来我做得不好,出现以下错误:
Subscript indices must either be real positive integers or logicals.-
Error using vertcat
Dimensions of matrices being concatenated are not consistent.
这是我的原始代码:
setsize = 9;
r = 340;
cx = 500;
cy = 500;
anglesegment = 2 * pi/setsize;
circleposition = [];
for i = drange (0:setsize)
x = r * cos(i*anglesegment) + cx;
y = r * sin(i*anglesegment) + cy;
circleposition = [x,y];
end
输出:
circleposition =
0 1.0000
840.0000 500.0000
仅在第一次/最后一次迭代时运行。我需要得到9个x
和9个y
(取决于setsize,变量)。
答案 0 :(得分:1)
听力是有效的代码:
setsize = 9;
r = 340;
cx = 500;
cy = 500;
anglesegment = 2 * pi/setsize;
circleposition = zeros(setsize + 1, 2); % Changed from circleposition = []
for i = drange (0:setsize)
x = r * cos(i*anglesegment) + cx;
y = r * sin(i*anglesegment) + cy;
circleposition((i+1),:) = [x,y]; % Changed from circleposition = [x,y];
end
说明:
解决方法是将circleposition = [x,y];
更改为circleposition((i+1),:) = [x,y]
。如果没有((i+1),:)
,您将更改circleposition
的数据,而不是添加到其中。
不需要将circleposition = [];
更改为circleposition = zeros(setsize + 1, 2);
,它只是建议分配内存以提高速度,而不是少数元素的问题。
答案 1 :(得分:1)
这很难理解,哪个错误消息来自哪个尝试,但是让我们看一下。
我没有访问 Parallel Computing Toolbox 的权限,使用for-loop over distributed range drange
似乎是必需的,但是我认为,可以用for i = 0:setsize
代替此循环测试。
现在,从i = 0
开始,您将尝试访问x(0)
和y(0)
,这是不允许的(下标索引必须是实数正整数或逻辑< / em>)。另外,如您在问题中所述,您将获得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
时出错。被连接的矩阵的尺寸不一致。):我看不到,您在哪里使用了垂直连接! / p>