Arrays For循环未正确更新

Arrays For循环未正确更新,arrays,matlab,for-loop,conditional-statements,Arrays,Matlab,For Loop,Conditional Statements,我已经编写了以下代码 U_Velocity = []; for aa = 1:38 for bb = 1:38 for cc = 1:40 fieldname = ['U_Velocity' num2str(aa + (cc-1)*38)]; U_Velocity.(fieldname) = dataCOMB{1,cc}{1,bb}(1:1024,2); MeanU_Velocity.(fieldna

我已经编写了以下代码

U_Velocity = [];
for aa = 1:38
    for bb = 1:38
        for cc = 1:40
            fieldname = ['U_Velocity' num2str(aa + (cc-1)*38)];
            U_Velocity.(fieldname) = dataCOMB{1,cc}{1,bb}(1:1024,2);
            MeanU_Velocity.(fieldname) = mean(dataCOMB{1,cc}{1,bb}(1:1024,2));
        end
    end
end
代码创建了一个名为U_Velocity的数据结构。在这个结构中,它正确地记录了1520个名为U_Velocity1到1520的数据点,但它提取了错误的数据

目前,它从阵列数据梳中提取的前38个速度值是相同的,并且在cc=1和bb=38时获取。第二组38个速度值与cc=2和bb=38的速度值相同。出于某种原因,For循环直接跳到bb的结束值。我试图让代码命名U_velocty1到38,cc=1,bb=1,2,然后3,以此类推到38

一旦取了前38个值,我希望代码重新开始,cc现在等于2,bb以1的增量从1到38,这一次将值命名为U_Velocity39到76。你知道我做错了什么吗

问候,,
Jerry

首先,在创建字段名时,您应该考虑
bb
。对于固定的
aa
,当迭代
bb
时,
fieldname
不会更改。在
bb
的每次迭代中,
U\U Velocity.(fieldname)
的内容因此被覆盖,因此在循环结束时,您只能看到
bb=38
的内容。正如@sobek所提到的,在创建字段名时,您必须考虑
bb
。我已经解决了这个问题。不需要第三个for循环。bb可以是=aa。参见代码。谢谢你们的帮助!U_速度=[];对于aa=1:38,bb=aa;对于cc=1:40,fieldname=['U_Velocity'num2str(aa+(cc-1)*38)];U_速度(fieldname)=数据梳{1,cc}{1,bb}(1:1024,2);请注意,缩进本身并不能声明代码应该在哪个循环中执行。您需要正确设置
end
。我对您的代码进行了编辑,以便更好地突出显示
end
s的实际执行情况。