我的代码如下:
我实际上有两个关于我的代码的问题:
1:从这段代码我想找到D.Even的值我得到“D”的值,但每次当前“D”加上前一个“D”。喜欢搞
D(1,:)=30 30 30 30 30
D(2,:)=60 60 60 60 60
D(3,:)=89 89 89 90 90
但我想得到
D(1,:)=30 30 30 30 30
D(2,:)=30 30 30 30 30
D(3,:)=29 29 29 30 30
我知道我可以通过在获取for循环后从前一个D
中提取当前D
来做到这一点,但我不想这样做。我想在{{1}内做一些事情}}
for loop.
运行此代码,我需要为单元格数组中的每个试验存储iteration=100 times
的值,因为稍后我需要使用D的这些值。 Matlab专家需要您提出两个问题的帮助和建议。
答案 0 :(得分:1)
第一部分:循环后执行此操作
D = [D(1,:), diff(D)];
e.g。
D = [30 30 30 30 30
60 60 60 60 60
89 89 89 90 90];
[D(1,:); diff(D)]
ans =
30 30 30 30 30
30 30 30 30 30
29 29 29 30 30
第二部分:为什么只将它存储在新的矩阵中?
AllTheDs{counter} = D %// This will be outside your current for-loop but presumably inside your new loop that counts to 20k
答案 1 :(得分:0)
我的第一个想法也是@Dan提出的差异解决方案。然而,我开始想知道问题是否也许你只是继续添加东西而不打算这样做。
我发现您已将此作为rec2_Wopt
更新的唯一行
rec2_Wopt(1) = rec2_Wopt(1) + sum(RecP) ;
因此,在第二个循环之后,它将包括第一个循环和第二个循环的添加是合乎逻辑的。
要解决此问题,请通过重置变量来启动每个循环。对于这个变量,它将是:
rec2_Wopt(1) = 0
或者
rec2_Wopt = zeros(1, length(N)) ;