Как использовать разреженную матрицу в MATLAB без проблем с MAXSIZE? - PullRequest
0 голосов
/ 13 апреля 2020

хочу использовать алгоритм mRMR, а часть кода использует функцию mutinfoDis, которая имеет следующий код:

% feature-selection-mRMR
% Created by Jiahong K. Chen
% Input: x, y two vector of discrete data
% Output: I(x,y) = mutual information of x and y
function mi = mutualInfoDis(x, y)
  n       = length(x);
 % reshape x and y into column vector
 x       = x(:);
 y       = y(:);
 % shift x and y to 1:max([x;y])
 lo      = min( [ x; y ] );
 x       = x - lo + 1;
 y       = y - lo + 1;
 up      = max( [ x; y ] );
 % negative Joint entropy
 idx     = (1:n);
 tabX    = sparse(idx, x, 1, n, up, n);
 tabY    = sparse(idx, y, 1, n, up, n);
 Pxy     = nonzeros(tabX'*tabY) / n;
 negHxy  = Pxy' * log(Pxy);
 % negative Entropy
 Px      = mean(tabX);
 Py      = mean(tabY);
 negHx   = Px * log(Px)';
 negHy   = Py * log(Py)';
 % Mutual information
 mi      = negHxy - negHx - negHy;
 %mi      = mi/log(2);
 end

, но эта ошибка показана:

 Error using sparse
 Sparse matrix sizes must be non-negative integers less than MAXSIZE as defined by COMPUTER.  Use 
 HELP COMPUTER for more
 details.
 Error in mutualInfoDis (line 23)
 tabX    = sparse(idx, x, 1, n, up, n);

Я получил максимальный размер установленной на моем компьютере программы MATLAB

 >> [str,maxsize]=computer
 str =
 PCWIN64
 maxsize =
    2.8147e+14

Как решить эту ошибку, я изменяю n на это значение или меньше, чем maxsize, но, тем не менее, у программы есть проблема с использованием лонжеронов, я буду очень благодарен за ваше мнение.

...