-2

4行400,000列の行列があります。連続する4行の平均を取得する必要があります。つまり、行1から行4、行5から8などの平均です。

4列はそのまま維持する必要があります。これは幼稚園レベルの問題である可能性があることは知っていますが、Matlabでプログラムを作成するためのヒントをいただければ幸いです。私はMatlabプログラムを書いた経験が少しあります。

データの例は次のとおりです。

[1 2 3 2; 
 5 6 7 2;
 9 6 7 6;
 5 2 3 2;
 9 8 7 6;
 6 5 4 3; 
 4 3 2 1;
 9 8 7 6]

結果は次のようになります。

[5 4 5 3],[7 6 5 4]
4

1 に答える 1

2

あなたのデータがどのように配置されているかは私には完全には明らかではありません。

あなたが持っていると仮定します

a = [
    1   2   3   4    %# row 1
    2   3   4   5 
    3   4   5   6 
    4   5   6   7    %# row 4
    5   6   7   8    %# row 5
    ...
    ];               %# row m

そして、行1から4、5から8などの列の平均が必要です。これは、次のように簡単に行うことができます

averages = reshape(mean(reshape(a,4,4,[])),[],4)

壊す:

A = reshape(a,4,4,[])

マトリックス内のデータを 3D 配列に再配置します。この配列の各 3D「レイヤー」は4x4マトリックスです。

B = mean(A)

これは、列に沿って平均を取ります (方向1)。詳細については、続きをお読みhelp meanください。

C = reshape(B,[],4)

これにより、平均の配列がNx4行列に再配置されN=m/4ます。

于 2012-08-17T07:49:11.890 に答える