load imagedata
% load imagenewdata
classnum=40;
everypersonnums=5;
pcamaxnums=60;%设定pca最大的前maxnums特征值
ldamaxnums=20;%lda操作选取的特征数
% pstudy=newpstudy;
% ptest=newptest;
%每幅训练图象减去平均值
[mstudy,nstudy]=size(pstudy);
pstudymean=mean(pstudy(:,1:nstudy-1));
pstudy1=pstudy(:,1:nstudy-1)-pstudymean(ones(mstudy,1),:);
%每幅测试图象减去平均值
[mtest,ntest]=size(ptest);
ptestmean=mean(ptest(:,1:ntest-1));
ptest1=ptest(:,1:ntest-1)-ptestmean(ones(mtest,1),:);
%计算训练样本协方差矩阵及其特征值,特征向量
f=(1/sqrt(mstudy))*pstudy1;
L=f*f';
[eignvectors,eignvalues] = eig(L);
%将特征值从大到小排列
% [ee,kk]=sort(diag(eignvalues),'descend');
[ee,kk]=sort(diag(eignvalues));
kk=flipud(kk);
%取得排列后特征值对应的特征向量
eigns=eignvectors(:,kk);
%求投影矩阵
U=f'*eigns;
%把矩阵单位化
for i=1:mstudy
U(:,i)=U(:,i)/norm(U(:,i));
end
%选maxnums个特征向量组成子空间
UU(:,1:pcamaxnums)=U(:,1:pcamaxnums);
%求pca在训练集上的投影矩阵
pcastudy2=pstudy1*UU;
%计算类间散布矩阵SB
pcastudy2mean=mean(pcastudy2);%求在测试集上总体平均值
for i=1:classnum
k1=(i-1)*everypersonnums+1;
k2=(i-1)*everypersonnums+5;
everypersonmean(i,:)=sum(pcastudy2(k1:k2,:))/everypersonnums;
end
SB=zeros(pcamaxnums,pcamaxnums);
for i=1:classnum
SB=SB+everypersonnums*(everypersonmean(i,:)-pcastudy2mean)'*(everypersonmean(i,:)-pcastudy2mean);
end
%计算总类内散布矩阵Sw
SW=zeros(pcamaxnums,pcamaxnums);
for i=1:classnum
for j=1:everypersonnums
SW=SW+(pcastudy2((i-1)*everypersonnums+j,:)-everypersonmean(i,:))'*(pcastudy2((i-1)*everypersonnums+j,:)-everypersonmean(i,:));
end
end
%计算投影矩阵
bb=(inv(SW))*SB;
[beignvectors,beignvalues] = eig(bb);
%将特征值从大到小排列
% [bee,bkk]=sort(diag(beignvalues),'descend');
[bee,bkk]=sort(diag(beignvalues));
bkk=flipud(bkk);
%取得排列后特征值对应的特征向量
beigns=beignvectors(:,bkk);
wf(:,1:ldamaxnums)=beigns(:,1:ldamaxnums);
%求pca在训练集上的投影矩阵
pcastudy2=pstudy1*UU;
pcastudy2mean=mean(pcastudy2);
pcastudy2=pcastudy2-pcastudy2mean(ones(mstudy,1),:);
%求pca在测试集上的投影矩阵
pcatest2=ptest1*UU;
pcatest2mean=mean(pcatest2);
pcatest2=pcatest2-pcatest2mean(ones(mtest,1),:);
learnfishstudy=pcastudy2*wf;% 计算训练样本的PCA+FLD特征向量
testfishstudy=pcatest2*wf;% 计算测试样本的PCA+FLD特征向量
%对pca训练集和测试集上的矩阵进行单位化
st1=learnfishstudy;
% for i=1:size(st1)
% st1(i,:)=st1(i,:)/norm(st1(i,:));
% end
ldastudy=[st1 double(pstudy(:,nstudy))];
st2=testfishstudy;
% for i=1:size(st2)
% st2(i,:)=st2(i,:)/norm(st2(i,:));
% end
ldatest=[st2 double(ptest(:,ntest))];
savefile = 'imageldadata.mat';
save(savefile, 'ldastudy','ldatest')

alvarocfc
- 粉丝: 143
- 资源: 1万+
最新资源
- C# 自定义控件结合 OpenCvSharp 实现卡尺测距功能.pdf
- C#.NET开发ABB机器人上位机操作及数据读写:完整项目与二次开发指南.pdf
- C#_ASP.NET酒店管理系统:三层架构、MVC、SQL Server 2008 + VS2015全套源码及运行视频.pdf
- C#_HK_BSL视觉上位机MES源码(VS2019版).pdf
- C#3C运动控制软件框架:A项目标准界面(半导体&新能源项目专用),5年稳定框架,三级权限管理,自定义轴数与控制方式,集成MES WebService与EtherCAT控制卡.pdf
- C#_ASP.NET酒店管理系统:三层架构、MVC、SQL Server 2008 教程级源码.pdf
- C#三菱FX3U以太网MC协议客户端设计工程源码(带注释+开源dll文件+打包完的安装包).pdf
- C#yolov5上位机软件:结合海康相机取图并提供源码的项目实践.pdf
- C# BMS上位机源码:已定好串口协议,带数据库存储的扩展性源码.pdf
- C# ERP管理系统全源码(VS2012.net+SQLServer2008R2 c# Winform版).pdf
- C# Halcon视觉PCB基板瑕疵检测程序源码:集多种缺陷检测、IO控制与视觉定位于一体的智能检测系统.pdf
- C# CAN总线开发接口源代码(完美解决内存溢出与程序闪退问题)及TCP Client、串口连接源代码示例.pdf
- C# LS PLC串口通信库:多线程访问与数据类型全面支持.pdf
- C# Modbus RTU Master从站串口调试工具源码 - Visual Studio 2019开发,.NET Framework 4.8框架支持多种功能码、数据类型与格式.pdf
- C# Modbus RS485 RTU 主站源码程序(支持功能码01-10).pdf
- 中国人工智能学会推荐的人工智能相关国际会议和期刊目录解析与指南 (2023最新)
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈


