pop为100×36的矩阵,npop数值是100,pCross数值是0.8;function newPop = crossover(pop, nPop, pCross) newPop = pop; for i = 1:2:nPop if rand < pCross i1 = randi(nPop); i2 = randi(nPop); c = randi(size(pop,2)-1)+1; newPop(i,:) = [pop(i1,1:c), pop(i2,c:end)]; newPop(i+1,:) = [pop(i2,1:c), pop(i1,c:end)]; end end end 系统报错说newPop(i,:) = [pop(i1,1:c), pop(i2,c:end)];的左侧索引与右侧的大小不兼容
时间: 2023-06-11 17:08:56 浏览: 100
基于NSGAII的多目标优化算法matlab仿真+仿真录像
5星 · 资源好评率100%
这个错误是因为左侧的索引 `[i, :]` 所指定的大小与右侧的大小不兼容。具体来说,可能是由于 `pop(i1, 1:c)` 或 `pop(i2, c:end)` 的大小与 `pop(i, :)` 的大小不一致导致的。
你可以在运行代码时,打印出相应变量的大小,以便于调试。同时,你也可以尝试修改赋值语句,使得左右两侧的大小一致。
阅读全文