关于matlab程序 PCA变换代码有些地方没看懂!
来源:学生作业帮 编辑:搜搜做题作业网作业帮 分类:综合作业 时间:2024/06/25 18:36:53
关于matlab程序 PCA变换代码有些地方没看懂!
[M,N,bs] = size(multi);
multi_mean = mean(mean(multi)); %多光谱影像各波段均值
multi_Cx = 0; %协方差矩阵
for i = 1 :M
for j = 1 :N
multi_S = multi(i,j,:);
multi_S = multi_S - multi_mean;
multi_S = reshape(multi_S,bs,1); % 转换为bs行向量
multi_Cx = multi_Cx + multi_S * multi_S'; 这一步是求协方差的吗?
end
end
multi_Cx = multi_Cx / (bs - 1); 为什么要除以(bs-1)?
[M,N,bs] = size(multi);
multi_mean = mean(mean(multi)); %多光谱影像各波段均值
multi_Cx = 0; %协方差矩阵
for i = 1 :M
for j = 1 :N
multi_S = multi(i,j,:);
multi_S = multi_S - multi_mean;
multi_S = reshape(multi_S,bs,1); % 转换为bs行向量
multi_Cx = multi_Cx + multi_S * multi_S'; 这一步是求协方差的吗?
end
end
multi_Cx = multi_Cx / (bs - 1); 为什么要除以(bs-1)?
![关于matlab程序 PCA变换代码有些地方没看懂!](/uploads/image/z/7452974-38-4.jpg?t=%E5%85%B3%E4%BA%8Ematlab%E7%A8%8B%E5%BA%8F+PCA%E5%8F%98%E6%8D%A2%E4%BB%A3%E7%A0%81%E6%9C%89%E4%BA%9B%E5%9C%B0%E6%96%B9%E6%B2%A1%E7%9C%8B%E6%87%82%21)
multi_Cx = multi_Cx + multi_S * multi_S' --------------- 这一步是求协方差的中间过程multi_Cx = multi_Cx / (bs - 1);------------------------这个是协方差矩阵![](http://img.wesiedu.com/upload/3/c4/3c4605e8a27cdd05ee56fb170d6abad7.jpg)
![](http://img.wesiedu.com/upload/3/c4/3c4605e8a27cdd05ee56fb170d6abad7.jpg)