专栏
标签
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.运行上述代码,得到正确结果:
image.png

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

全部回答

暂无数据
暂无数据
用户
和原帖交流更多问题细节吧,去
我要发帖 我要发帖
资料中心 资料中心
查看更多>
热门帖子 热门帖子
主要贡献者 主要贡献者
过去7天