すべての行列の平均を求めたい:
Data =(Data {1} + ...... + Data {n})/ n)ここで、Data{n}はm*nの行列です。
どうもありがとうございました
まず、セル配列を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、に置き換えることができtmp、Dataすべてが正常に機能します。
または、ifDataは単にam*n数値配列です
averageData = mean(Data,2);
セル配列が非常に大きい場合は、メモリ使用量のため、上記のソリューションを避けたい場合があります。mtimesx次に、MatlabCentralから入手できるユーティリティを使用することをお勧めします。
N = length(Data);
b = cell(N,1);
b(:) = {1};
averageData = mtimesx(Data,b)/N;
上記の例では、データは線状のセル配列であると想定しました。私は個人的に使用したことはありませんmtimesx。この解決策はそこから来ており、タイミングの問題についても説明されています。
お役に立てれば。
A。