-1

我的代码如下:

关于我的代码,我实际上有两个问题:

1:从这段代码中我想找到D的值。即使我得到了“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

D我知道我可以通过在获取 for 循环后从前一个中提取电流来做到这一点,D但我不想这样做。我想在for loop.

  1. 另一个问题是我需要运行此代码,iteration=100 times并且我需要将"D"每个试验的值存储在一个单元数组中,因为稍后我需要使用 D 的这些值。

Matlab 专家需要您对两个问题的帮助和建议。

4

2 回答 2

1

第一部分:在循环之后执行此操作

D = [D(1,:), diff(D)];

例如

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
于 2013-10-10T14:12:09.407 回答
0

我的第一个想法也是@Dan 提出的差异解决方案。但是后来我开始怀疑问题是否在于您只是不断添加内容而无意这样做。

我看到您将此作为唯一rec2_Wopt更新的行

rec2_Wopt(1) = rec2_Wopt(1) + sum(RecP) ;

因此,在第二个循环之后,它将包括第一个循环和第二个循环的添加是合乎逻辑的。

要解决此问题,请通过重置变量来启动每个循环。对于这个变量,它将是:

rec2_Wopt(1) = 0

或者

rec2_Wopt = zeros(1, length(N)) ;
于 2013-10-11T11:12:32.757 回答