M 兼容使用多层 for 循环:数组赋值 下标超出范围, 下标 XXX
技术分享
发布于 2025-07-10 10:35:58
查看 1过去327天
问题现象
运行以下代码,会提示“数组赋值: 下标超出范围, 下标: 0”
dims1 = 2;
dims2 = 3;
dims3 = 2;
dims4 = 4;
k = zeros(dims1,dims2,dims3,dims4);
for i = 1:dims1
for j = 1:dims2
for k = 1:dims3
for l = 1:dims4
k(i,j,k,l) = i*1000 + j*100 + k*10 +l;
end
end
end
end
disp(k)
解决方法
在使用 for 循环时,控制循环的变量与需要计算的变量重复命名,导致出现报错。
1.代码修改为以下:
dims1 = 2;
dims2 = 3;
dims3 = 2;
dims4 = 4;
% k = zeros(dims1,dims2,dims3,dims4); %与第三层循环的控制变量重复
result = zeros(dims1,dims2,dims3,dims4); %重命名为 result
for i = 1:dims1
for j = 1:dims2
for k = 1:dims3
for l = 1:dims4
% k(i,j,k,l) = i*1000 + j*100 + k*10 +l; %与第三层循环的控制变量重复
result(i,j,k,l) = i*1000 + j*100 + k*10 +l; %重命名为 result
end
end
end
end
% disp(k) %与第三层循环的控制变量重复
disp(result) %重命名为 result
2.运行上述代码,得到正确结果:

所属专栏:Syslab基础平台
产品信息:Syslab科学计算环境