第一篇投稿代码整理

代码块1

data_preprocessing:

dirOutput = dir('*.h5');     %%% diroutput 是struct 

fileNames = {dirOutput.name}';    %%% filename 是 cell
                                  %%% filename{i}是char                                 
%%%% dir('*.h5');=dir *.h5;
%前面有变量时候则用('.h5') 

%% mkdir('A','B') 创建A目录下B文件夹
% rmdir('foldername','s')全部移除; % copyfile('source','destination','f')
% copyfile('A.m','B.m')在当前文件夹复制A改名为B;% copyfile('A.m','D:\...\B.m')复制到另一个文件夹;

numClasses = size(fileNames,1);
disp('number of classes: ');
disp(numClasses);
options.ReducedDim = 40;


for class_id=2:numClasses
    tic;
    filename = fileNames{class_id};   %% {}不是();返回的是存在cell中的值,不是cell,保证[filename(1:end-3) '_40.mat']
    disp(['Reading the h5 file: ' ,filename]);  %disp text or value
    data = h5read(filename, '/fc7');
    data = double(bsxfun(@minus, data, mean(data)));
%     n = size(data,2);
%     idx = randsample(n,min([20000,n]));
%     W = PCA(double(data(:,idx))',options);
    W = PCA(double(data)',options);

    data = W'*data;
    save([filename(1:end-3) '_40.mat'],'data');
    toc;
end

代码块2

idx.m:

clear;clc;

dirOutput = dir('.');           %%%  dirOutput是struct类型
dirNames = {dirOutput.name}';   %%%  dirNames是cell类型
dirNames = dirNames(3:end-5);   %%% dirname(1:3)是前3个cell类型,

numClasses = size(dirNames,1);
disp('number of classes: ');
disp(numClasses);

for class_id=2:numClasses
    tic;
    disp(class_id);
    frame_names = dir([dirNames{class_id} '/*.jpeg']); 
    frame_names = {frame_names.name}';
    idx{class_id-1} = cell2mat( cellfun(@(x) str2double(x(1:6)), frame_names, 'UniformOutput', false) ); %%% @(arglist) function===>@的用法
    %%%  cell2mat 合并作用
    toc;
end

save('idx.mat', idx);

代码块3

compute S.m:
clear;clc;

load class_names;
load idx;
indices = idx;
clear idx;

for i = 1:length(indices)
    load([class_names{i} '_40.mat'],'data');  %% load'.mat'的data变量
    idx = indices{i};   %%% indices{i}是cell里面的数字内容
    uni_idx = unique(idx); %% unique(A)返回无重复数值与A类型相同
    for j = 1:length(uni_idx)
        frames = data(:,idx==uni_idx(j));
        S{j} = frames*((frames'*frames+1e-6*eye(size(frames,2)))\frames');
    end
    save([class_names{i} '_S'],'S');
    clear S;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值