⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tdpca2.m

📁 pca 算法的matlab实现 与大家一起分享
💻 M
字号:
%%%2DPCA算法  前train_num个作为训练样本  输出的数据以二维表示
function new_data = TDPCA2(data,class_num,train_num,line_num,new_line_num)   %new_line_num:变换后的图象数据的列数   line_num:变换前的图象数据的列数
%  输入的data是一维数据
[ dim,total_num ] = size( data ) ;
class_data_num = total_num/class_num ;   %得到每类中的样本数目
%train_data = [];
train_data_num = train_num*class_num;
row_num=dim/line_num;
test_num = class_data_num-train_num;

for data_mark = 1:total_num
    td_data(:,:,data_mark) = reshape(data(:,data_mark),row_num,line_num);  %将一维数据转换成2维表示
    %2d_total_data = 
end
         
    % n = randperm(class_data_num);
    train_index = [1:train_num];
    test_index = [(train_num+1):class_data_num];
    for class_mark = 1:class_num                     %for循环得到训练数据和测试数据
    td_train_data(:,:,(class_num-1)*train_num+(1:train_num)) = td_data(:,:,(class_num-1)*class_data_num+train_index);
    td_test_data(:,:,(class_num-1)*test_num+(1:test_num)) = td_data(:,:,(class_num-1)*class_data_num+test_index);
    end
    td_mean_train_data = mean(td_train_data,3);
    %2d_mean_test_data = mean(2d_test_data,3);
    cova_td_train_data = zeros(line_num,line_num);     
    for train_data_mark = 1:train_data_num    %  得到图象散度矩阵
    cova_td_train_data = cova_td_train_data+(td_train_data(:,:,train_data_mark)-td_mean_train_data)'*(td_train_data(:,:,train_data_mark)-td_mean_train_data);
    end
    cova_td_train_data =  cova_td_train_data/train_data_num;
    [comp_vec,comp_val] = eig(cova_td_train_data);
    val = diag(comp_val);
    [sort_val,index] = sort(val,'descend');
    sort_vec = comp_vec(:,index);
%     for vec_mark = 1:new_line_num
%         trans_vec(:,vec_mark) = 
%     end
trans_vec = sort_vec(:,1:new_line_num);
for data_mark = 1:total_num               %for循环得到做2dpca后的数据         
    new_data(:,:,data_mark) = td_data(:,:,data_mark)*trans_vec;
end

    

    

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -