Я использую сингулярное векторное разложение на матрице и получаю матрицы U, S и Vt. На данный момент я пытаюсь выбрать порог для количества измерений, чтобы сохранить. Мне предложили взглянуть на сюжетный осколок, но мне интересно, как сделать так, чтобы он наносился на ноль. В настоящее время я делаю следующее, используя библиотеки numpy и scipy в python:
U, S, Vt = svd(A)
Какие-либо предложения?
@shabbychef: Вы имеете в виду, возьмите совокупную сумму и поделите на сумму всех значений, верно?
—
Легенда
да. В Matlab это было бы
—
шаббучеф
[U,S,V] = svd(X);S = cumsum(sort(diag(S).^2,1,'descend'));S = S ./ S(end);plot(S);
S
, если она еще не диагональ, возведите ее в квадрат, отсортируйте в порядке убывания, возьмите накопленную сумму, разделите на последнее значение, затем построите ее.