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 に答える