我一直收到错误"订阅分配维度不匹配"对于x_values行。我试过切换括号,但我无法弄明白。我对MATLAB不是很好,这段代码超长,所以我不想发布整个内容。
for m = 1:num_part;
for n = 2:num_steps;
x_values(m,n) = x_values(m,n-1)+ stride_length .* (cos(step_angle(m,n)));
y_values(m,n) = y_values(m,n-1)+ stride_length .* (sin(step_angle(m,n)));
r_values (m,n) = sqrt(x_values(m,n).^2 + y_values(m,n).^2);
if bound_cross(m)~=0;
continue;
elseif bound <= r_values(m,n);
bound_cross (m,1) = n;
end
end
答案 0 :(得分:0)
正如我所知,错误在变量bound_cross
中。如果您已按照在评论中回复的方式定义了&#39; bound_cross = [num_part, 1]
&#39;,则只会创建1 * 2元素矩阵。但是如果你需要20 * 1矩阵,你必须专门定义它。但是为了检查代码,我使用了一个空矩阵,它工作正常。
num_part = 20;
num_steps = 1000;
stride_length = 100;
bound = 1;
bound_cross = ones(num_part, 1) ;
x_values = zeros(num_part, num_steps);
y_values = x_values;
r_values = x_values;
step_angle = x_values;
for m = 1:num_part;
for n = 2:num_steps;
x_values(m,n) = x_values(m,n-1)+ stride_length .* (cos(step_angle(m,n)));
y_values(m,n) = y_values(m,n-1)+ stride_length .* (sin(step_angle(m,n)));
r_values (m,n) = sqrt(x_values(m,n).^2 + y_values(m,n).^2);
if bound_cross(m)~=0;
continue;
elseif bound <= r_values(m,n);
bound_cross (m,1) = n;
end
end
end