for
循环如下:
N = 2;T = 3;
Trials = rand(N,T);
for i=1:N
for j=1:T
AverageValue = mean2(Trials);
Trials(i,j) = Trials(i,j) - AverageValue;
end
end
难点在于AverageValue
根据每个更新的Trials
更改其值。
===========================================
使用' mean2'更新版本替换为' trapz' :
N=4;T=5;
Trials=rand(N,T);
for i=1:N
for j=1:T
IntValue=trapz(trapz(Trials(1:3,2:5)));
Trials(i,j)=Trials(i,j)+IntValue;
end
end
请帮助,谢谢!
答案 0 :(得分:2)
以下代码将生成与帖子中示例相同的输出:
n = numel(Trials);
Trials = Trials - mean2(Trials)*reshape(((n-1)/n).^(0:n-1), T, N)';
解释:通过观察递归减法所产生的模式,您可以得到每个当前均值m
形式的关系:
m(k) = m(k-1) - m(k-1)/n = ((n-1)/n)*m(k-1); % symbolic
因此,您可以使用嵌入式递归直接从原始矩阵中减去矩阵,即
[m(1) m(2) m(3);
m(4) m(5) m(6)];
其中每个m
根据规则m(k)= (((n-1)/n)^(k-1)*)m(1);
使用先前值的累积进行分析替换,其中m(1)
是原始矩阵的平均值。