Возможный дубликат:
В MATLAB заканчивается память, но этого не должно быть
Я хочу выполнить анализ PCA на огромном наборе данных точек. Чтобы быть более конкретным, у меня есть size(dataPoints) = [329150 132]
, где 328150
— количество точек данных, а 132
— количество функций.
Я хочу извлечь собственные векторы и соответствующие им собственные значения, чтобы выполнить реконструкцию PCA.
Однако, когда я использую функцию princomp
(т.е. [eigenVectors projectedData eigenValues] = princomp(dataPoints);
, я получаю следующую ошибку:
>> [eigenVectors projectedData eigenValues] = princomp(pointsData);
Error using svd
Out of memory. Type HELP MEMORY for your options.
Error in princomp (line 86)
[U,sigma,coeff] = svd(x0,econFlag); % put in 1/sqrt(n-1) later
Однако, если я использую меньший набор данных, у меня нет проблем.
Как я могу выполнить PCA для всего моего набора данных в Matlab? Кто-нибудь сталкивался с этой проблемой?
Изменить:
Я изменил функцию princomp
и попытался использовать svds
вместо svd
, но, тем не менее, получаю почти ту же ошибку. Я сбросил ошибку ниже:
Error using horzcat
Out of memory. Type HELP MEMORY for your options.
Error in svds (line 65)
B = [sparse(m,m) A; A' sparse(n,n)];
Error in princomp (line 86)
[U,sigma,coeff] = svds(x0,econFlag); % put in 1/sqrt(n-1) later