2012-07-29 30 views
0

我有一個結構:許多(i).fincomp,每個這些是(200x1) 我想爲每個'我'創建一個直方圖計數: histc(many(i).fincomp ,1:12)< - 該工作structfun與向量輸入

>>histmany = structfun(@(x)histc(x.fincomp,1:12),many, 'UniformOutput', false); 
Error using structfun 
Inputs to STRUCTFUN must be scalar structures. 

我究竟做錯了什麼?

我arrayfun嘗試以及

注:一些數據是NaN,其餘是數字

感謝

+0

哎呦顯然它沒有當我用arrayfun,因爲我寫的''false'',而不是'FALSE'工作:'histmany = arrayfun(@( X) histc(x.fincomp,1:12),很多'UniformOutput',false);' – Daniel 2012-07-29 14:34:46

回答

4

你不應該使用structfun因爲many是不是結構。使用arrayfuncellfun

1

你可以完全放棄的環路ARRAYFUN由陣列的-結構轉換爲矩陣。 HISTC可以在矩陣操作(沿第一非單維的作品,在這裏即列):

histmany = histc(horzcat(many.fincomp), 1:12); 

我用這個簡單的例子來測試它:

many = struct(); 
for i=1:10 
    many(i).fincomp = randn(200,1); 
end 
1

如果fincomp字段包含相同大小的列矢量,你可以得到所有的字段成矩陣:

data = [many.fincomp]; 

histc(data);