2015-12-08 2 views
0

Я занимаюсь анализом основных компонентов и хочу знать, может ли представлять суммирование от i до m (X (i) * X (i)^T) с точки зрения матрицы данных..direct умножение двух матриц.Векторизация в PCA

Это можно сделать .. или мне нужно использовать цикл for и делать это.

В настоящее время я попробовал

 sum=zeros(n,n); 
    for i=1:m 
    sum=sum+ X(i,:)*(X(i,:)^T); 
    end 

Моя цель состоит в том, чтобы найти главные собственные значения полученной матрицы. Заранее спасибо

+1

Не пытайтесь ответить на ваш вопрос, но не рекомендуется использовать 'sum' в качестве имени переменной! Это уже встроенная функция (http://se.mathworks.com/help/matlab/ref/sum.html) в Matlab. – mikkola

ответ

3

Say форма матрицы данных X является (Dim, Num), вы можете просто вычислить сумму всех образцов корреляций с:

S = X*X' 

Для реализации PCA, а также не забывать чтобы разделить матрицу на количество выборок.

Sigma = (1/N)X*X' 

Если ваши данные имеют нулевое среднее значение, это также ковариационная матрица.

Смежные вопросы