0

私は構造体を持っています: many(i).fincomp、これらのそれぞれは (200x1) です。各 'i' のヒストグラム カウントを作成したい: histc(many(i).fincomp,1:12) <-これは機能します

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

私は何を間違っていますか?

私もarrayfunで試しました

注: 一部のデータは NaN で、残りは数値です

ありがとう

4

3 に答える 3

4

structfunは構造体ではないため、使用しないでくださいmanyarrayfunまたはを使用しcellfunます。

于 2012-07-29T14:18:09.007 に答える
1

フィールドに同じサイズの列ベクトルが含まれている場合fincomp、すべてのフィールドを行列に入れることができます。

data = [many.fincomp];

histc(data);
于 2012-07-30T19:38:47.197 に答える
1

構造体の配列を行列に変換することで、ARRAYFUN ループを完全に省略することができます。HISTC は行列を操作できます (最初の非 1 次元、つまりここでは列に沿って機能します)。

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

この簡単な例を使用してテストしました。

many = struct();
for i=1:10
    many(i).fincomp = randn(200,1);
end
于 2012-07-29T16:25:25.650 に答える