2016-06-26 135 views
0

我被困在與單元陣列有關的問題中。我有一個單元格數組X(size-400),每個元素都是一個大小爲(1x100)的矩陣。我想得到平均矩陣,以便我得到1x100的結果。我嘗試過cellfun和前面討論過的其他方法。我無法獲得理想的結果。我可以做到這一點,而無需將單元格陣列轉換爲矩陣。matlab中單元陣列的平均矩陣

回答

1

這是我會怎麼做:級聯所有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 = mean(vertcat(x{:}), 1); % concatenate vertically. Mean of each column 

在這個例子中,

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 = 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需要x的每個細胞,其在我們的情況下將是意味着測試單元的一個例子Cell1,然後最後我們採取由此產生的矩陣的意思

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

    ans = 

     4.5833 
+0

感謝你的答案奧馬爾。我希望它像(4 + 1 + 7)/ 3,而不是每個單元的個體平均值。不管怎麼說,還是要謝謝你 – Vid