2

私は次のような文字列を持っています

a = 011112220010111122221110101111222201111111100022221111101101011... 

そして、0、1、2のグループの平均サイズを見つけたいと思います(この例では、それらすべてでおよそ3〜4になります)。それを行う簡単な方法はありますか?ありがとう!

4

2 に答える 2

0

matlabはわかりませんが、擬似コードを記述して使用できます。

int zeros <- 0 
int ones <- 0 
...
for(i = 0 ; i < a.lenght(or size) ; i++)
   if(a[i] == 0)
     zeros++
   else if(a[i] == 1)
     ones++
...
(or you can use switch case statement)

于 2012-04-09T05:34:24.323 に答える
0

関数を作成します。

function avg = avg_group_size(s, g)
assert(all(ischar(s)) && ischar(g) && numel(g) == 1, 'bad input');
s = s(:); % column
not_g = char(g + 1);
s_prev = [not_g; s(1 : end - 1)];
s_next = [s(2 : end); not_g];
idx_first   = find(s_prev ~= g & s == g);
idx_last    = find(s_next ~= g & s == g);
avg = mean(idx_last - idx_first + 1);
return

そしてそれを呼びます:

avg_0 = avg_group_size(a, '0');

..。

しかし、それはあまり効率的な方法ではありません。速度が重要な場合は、1つのループですべての平均を計算する必要があります。

于 2012-04-09T14:35:26.503 に答える