pca降维matlab代码
时间: 2023-07-02 13:04:58 浏览: 82
以下是使用Matlab实现PCA降维的代码示例:
```matlab
% 读入数据矩阵
data = load('data.mat');
% 对数据进行中心化
data_mean = mean(data, 1);
data_centered = data - data_mean;
% 计算数据协方差矩阵
cov_mat = cov(data_centered);
% 计算协方差矩阵的特征值和特征向量
[eig_vec, eig_val] = eig(cov_mat);
% 将特征值从大到小排序
[eig_val_sorted, eig_val_index] = sort(diag(eig_val), 'descend');
% 取出前k个特征向量
k = 2;
eig_vec_sorted = eig_vec(:, eig_val_index);
eig_vec_k = eig_vec_sorted(:, 1:k);
% 将数据投影到新的k维空间中
data_reduced = data_centered * eig_vec_k;
% 绘制降维后的数据散点图
scatter(data_reduced(:, 1), data_reduced(:, 2));
```
其中,`data`为原始数据矩阵,`data_mean`为数据均值,`data_centered`为中心化后的数据矩阵,`cov_mat`为数据协方差矩阵,`eig_vec`和`eig_val`分别为协方差矩阵的特征向量和特征值,`eig_val_sorted`为特征值从大到小排列后的结果,`eig_vec_sorted`为特征向量按照特征值大小排序后的结果,`k`为降维后的维度,`eig_vec_k`为选取的前k个特征向量,`data_reduced`为降维后的数据矩阵。最后,使用`scatter`函数绘制降维后的数据散点图。