以下是我的代码:
a= 10;
b= [1 0 0 0 1 0 1 0 1 0;1 1 0 0 1 0 1 0 1 1;1 0 1 0 1 0 1 1 1 0;1 1 1 1 1 0 1 0 1 0;1 0 1 0 1 0 1 0 1 0 ];
e= [0.05 0.08 0.2 0.4];
iteration= 1;
x= zeros(1,1);
g= eye(10);
G= [g;b];
for t=1 : iteration
s=zeros(4,1);
offset=1;
for u=e(1:length(e))
F = G ;
for i=1:15
if(rand < u)
F(i,:) = 0;
end
end
soup=zeros(1,a);
for k = 1 : 15
FD = max( F(k,:)-soup, 0) ;
if( sum(FD) == 1)
[MaxValue Idx] = max(FD) ;
soup(Idx) = 1 ;
end
end
h =sum(soup) ;
s(offset,:)=h;
offset=offset+1;
end
end
从此代码中我得到h=[10;10;10;8]
。我将计算10
中h
的数量“iteration”
。但是如果设置迭代= 5那么我只得到最后一次迭代的h。所以我不能计算每次迭代的10个数。我不想存储h的所有迭代值而不是我想要存储多少个10个迭代
现在我想更改1000
的值,并希望将其设为“iteration”
;对于每个“s”
“a”
的值等于“iteration”
的数量。假设,对于每个“s”
,“a”
中等于“T”
的值的数量为“T”
(允许)iteration
除以长度(e)。假设每个V
的值为V
(设)“iteration”
的总平均值2 iteration
实施例:
对于“s”
,“a”
中等于3,2
的值的数量为 For iteration=1, V=3/length(e)=3/4=0.75
For iteration = 2, V=2/length(e)=0.5
So, average value of V for two iteration = (0.75+0.5) / 2 = 0.625
所以,
{{1}}
我曾多次尝试但无法这样做。
Matlab专家请您提供帮助和建议。
答案 0 :(得分:0)
我在你的问题中有点迷失,但这就是我认为你需要的东西:
h
h(iteration)
答案 1 :(得分:0)
问题出现在你的循环开始时:
for t=1 : iteration
s=zeros(4,1);
...
s(offset,:)=h;
offset=offset+1;
这意味着您在每次迭代中重置变量s
。如果将s
的初始化移到循环外部,那么事情应该可以正常工作。实际上,您似乎只存储了最后一次迭代的结果(您将之前的迭代结果归零)。
编辑有点难以知道h
的大小是什么(它看起来像一个值,但你正在做s(offset,:) = h;
这有点令人困惑)。无论如何,如果你使s
足够大以包含所有值,并正确索引它,你应该没问题:
s = zeros( iteration, 4, 1 );
for t = 1 : iteration
...
s(t, offset, :) = h;
offset = offset + 1;
现在,对于每次迭代,您将在h
中获得s
的所有值。那更好吗?
编辑2 您希望每次迭代中h
为10
的次数。将此行放在for t=
循环之外:
Hcount = zeros(1,iteration);
在你计算h
后的内部:
Hcount(t) = numel(find(h==10));
每次迭代的'for loop this will contain what you wanted - and you can check it against
s which will have one row of
h`值结束时。