Я пытаюсь посчитать энтропию перестановки в октаве, но все время получаю ошибку
[pe] = entr_p(y,2)
warning: entr_p: some elements in list of return values are undefined
warning: called from
entr_p at line 4 column 1
pe = [](0x0)
, где y определяется как ряд, а m - это число
Ниже приведенокод
function pe = entr_p (y, m)
ly = length (y);
permlist = perms (1 : m);
dl = length (permlist);
c(1 : dl) = 0;
for j = 1 : (ly - (m - 1))
temp = y(j : j + (m - 1));
iv = sort (temp);
ziv = zeros (size (iv));
for dj = 1 : length (ziv)
ziv(dj) = find (temp == iv(dj), 1);
endfor
for jj = 1 : dl
if (abs (permlist (jj, :) - ziv')) == 0
c(jj) = c(jj) + 1;
endif
endfor
endfor
c(c == 0) = [];
p = c / sum (c);
pe = - sum (p .* log (p));
endfunction
Не могли бы вы мне помочь?
Большое спасибо!
y = [ 3.0818e+008, 3.0343e+008, 3.0398e+008, 3.5395e+008, 3.8701e+008, 4.7602e+008, 5.2773e+008 ...
6.7721e+008, 7.0715e+008, 7.1041e+008, 8.1292e+008, 1.1597e+009, 1.3512e+009, 1.6434e+009 ...
2.0692e+009, 2.3338e+009, 2.3213e+009, 2.3739e+009, 3.1167e+009, 4.8214e+009, 6.7460e+009 ...
6.7235e+009, 7.4145e+009, 7.0809e+009, 9.7301e+009, 1.4304e+010, 1.2987e+010, 1.4850e+010 ...
1.3753e+010, 1.4260e+010, 1.5788e+010, 1.3651e+010, 1.2335e+010, 2.0085e+010, 1.9479e+010 ...
2.2976e+010, 2.6954e+010, 2.3744e+010, 1.9389e+010, 2.4151e+010, 2.7922e+010, 2.3605e+010 ...
3.2405e+010, 3.7712e+010, 4.4308e+010, 4.6986e+010, 5.6842e+010, 6.0840e+010, 5.0950e+010 ...
4.8859e+010, 5.2798e+010, 4.9397e+010, 5.1856e+010, 5.8283e+010, 6.4801e+010, 5.7456e+010 ...
6.0445e+010 ]