📄 filt_get_c_layer.m
字号:
function f = filt_get_C_layer (prev_layer,varargin)% FUNCTION f = filt_get_C_layer (prev_layer,varargin)% % Create a typical C-layer filter, whose size is determined by the% size of the previous layer. The first arguement can be given as% a structure (of previous layer's responses) or as 3xnum_scale% matrix, specifying the sizes (x,y,features) by number of scales.% It will, in turn, invoke get_sized function to build the filters% of ones. % The varargin{1} may specify the shift values for each scale. The% default value is 1, for shift.f = [];% Get sizesif isstruct(prev_layer) num_scale = length(fieldnames(prev_layer)); for i = 1:num_scale scale_tag = ['s' num2str(i)]; layer_size(:,i) = size(getfield(prev_layer,scale_tag)); endelse % The input arguement prev_layer is the size. num_scale = size(prev_layer,2); layer_size = prev_layer; if size(prev_layer,1) ~= 3 error('Size was not specified correctly.'); endend% Get shiftsif length(varargin) > 0 shifts = varargin{1}; if length(shifts) ~= num_scale disp('Parameter shifts is not well defined. Use 1.'); shifts = ones(num_scale,1); endelse % no other input shifts = ones(num_scale,1);end% Now compute the C-layer filters.for i = 1:num_scale scale_tag = ['s' num2str(i)]; f = filt_get_sized(f,layer_size(:,i)',shifts(i),scale_tag); % It is a memory waste to copy 1's into different scales, so here for % higher scales 's2' and beyond, save []. if i > 1 f = setfield(f, ['f1_' scale_tag], []); f = setfield(f, ['f2_' scale_tag], []); f = setfield(f, ['i1_' scale_tag], []); f = setfield(f, ['i2_' scale_tag], []); f = setfield(f, ['i3_' scale_tag], []); end end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -