سلام . من pca رو خوندم ولی یه کد از تبدیل pca دیدم قاطی کردم ببینید:
[a,b]=size(X)
X = X-repmat(model.P,1,b);
if b < a
[U,V,L] = svd(X'*X);
model.W = normc(X*U(:,1:n));
else
[U,V,L] = svd(X*X'
model.W = normc(U(:,1:n));
end
compute features
model.train = model.W'*X;
model.eigenVal = diag(V);

یه جوانمرد پیدا میشه اینو توضیح بده
آخه من خونده بودم اول باید مقادیر رو از میانگین کم کنیم( که کرده) بعد ماتریس کوواریانس رو پیدا کنیم و مقدار ویژه و بردار ویژه ماتریس کوواریانس رو با دستور svd بدست بیاریم ولی اینجا بجای svd ماتریس کوواریانس ( svd(X'*X رو حساب کرده
1- مگه ماتریس کوواریانس میشه X'*X ؟؟
2- این normc چی هست چرا نرمالیزه کرده نداشتیم که تو pca

بعد برای کاهش بعد میایم بر اساس مقدار ویژه ها ستونهای متناسب با مقدار ویژه های بزرگ رو نگه می داریم و ترانهاده بردار کاهش یافته حاصل رو در داده اولیه ضرب می کنیم ( که این باید این قسمت باشه model.train = model.W'*X)
حالا تو اون نرم و کوواریانس موندم !لطفا کمک!