2016-06-26 27 views
0

セル配列に関連する問題が発生しました。私は、各要素がサイズ(1x100)の行列としてセル配列X(size-400)を持っています。私は1x100の結果を得るように平均行列を求めたい。私はcellfunと以前に議論した他の方法を試した。私は希望の結果を得ることができません。セル配列を行列に変換せずにそれを行うことはできますか?matlabのセル配列の平均行列

答えて

1

これは私はそれを行うことになる方法である:

result = 
    7.3333 3.0000 5.0000 4.0000 

、この例では

x = {[9 4 5 4] [5 3 6 7] [8 2 4 1]}; % example cell array of 3 vectors of size 1×4 
result = mean(vertcat(x{:}), 1); % concatenate vertically. Mean of each column 

:次に、各列の平均値を計算し、垂直方向にマトリックスに全て1×100のベクトルを連結

実際に行列を避けたい場合は、ループを使用して値を累積することができます。

x = {[9 4 5 4] [5 3 6 7] [8 2 4 1]}; % example cell array of 3 vectors of size 1×4 
result = zeros(size(x{1})); % initiallize 
for k = 1:numel(x) 
    result = result + x{k}; % accumulate values 
end 
result = result/numel(x); % divide to obtain mean 
+0

ありがとう、最初はシンプルでコンパクトです – Vid

0

cellfunを正しく使用していましたか? は、各セルの4つの要素を有し、サイズ3

>> Cell1 = {[4 3 5 3], [1 2 3 4], [7 8 9 6]} 

Cell1 = 

    [1x4 double] [1x4 double] [1x4 double] 

匿名関数xを使用し、cellfunが我々の場合には、次にCell1となり、xの各セルの平均とるた試験セルの一例を取ることができ最終的に結果の行列の平均を取る

mean(cellfun(@(x) mean(x),Cell1)) 

    ans = 

     4.5833 
+0

お返事ありがとうございました。私はそれが(4 + 1 + 7)/ 3のようになり、各セルの個々の平均ではないことを望んでいました。とにかくありがとう – Vid