1

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

请帮忙,谢谢!

4

1 回答 1

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)是原始矩阵的平均值。

于 2013-04-18T20:41:11.647 回答