1

すべての行列の平均を求めたい:

Data =(Data {1} + ...... + Data {n})/ n)ここで、Data{n}はm*nの行列です。

どうもありがとうございました

4

2 に答える 2

2

まず、セル配列を3D配列に変換してから、次のように平均をとることができます。

tmp = cat(3,Data{:}); %# catenates the data, so that it becomes a m*n*z (or m*1*n)
averageData = mean(tmp,3); %# takes average along 3rd dimension

注:この方法でメモリの問題が発生し、変数を保持する必要がない場合はData、に置き換えることができtmpDataすべてが正常に機能します。

または、ifDataは単にam*n数値配列です

averageData = mean(Data,2);
于 2010-08-27T11:19:10.303 に答える
1

セル配列が非常に大きい場合は、メモリ使用量のため、上記のソリューションを避けたい場合があります。mtimesx次に、MatlabCentralから入手できるユーティリティを使用することをお勧めします

N = length(Data);
b = cell(N,1);
b(:) = {1};
averageData = mtimesx(Data,b)/N;

上記の例では、データは線状のセル配列であると想定しました。私は個人的に使用したことはありませんmtimesx。この解決策はそこから来ており、タイミングの問題についても説明されています。

お役に立てれば。

A。

于 2010-08-27T14:04:07.217 に答える