📄 subsasgn.m
字号:
return
end
% Change learn function
net.layerWeights{i,j}.learn = learn;
% ===========================================================
function [net,err] = setLayerWeightLearnFcn(net,i,j,learnFcn)
% Check value
err = '';
if ~isstr(learnFcn)
err = sprintf('"layerWeights{%g,%g}.learnFcn" must be '''' or the name of a weight learning function.',i,j);
return
end
if length(learnFcn) & ~exist(learnFcn)
err = sprintf('"layerWeights{%g,%g}.learnFcn" cannot be set to non-existing function "%s".',i,j,learnFcn);
return
end
% Change learn function
net.layerWeights{i,j}.learnFcn = learnFcn;
% Default learn parameters
if length(learnFcn)
net.layerWeights{i,j}.learnParam = feval(learnFcn,'pdefaults');
else
net.layerWeights{i,j}.learnParam = [];
end
% ===========================================================
function [net,err] = setLayerWeightLearnParam(net,i,j,learnParam)
% Check value
err = '';
% Change learn parameters
net.layerWeights{i,j}.learnParam = learnParam;
% ===========================================================
function [net,err] = setLayerWeightWeightFcn(net,i,j,weightFcn)
% Check value
err = '';
if ~isstr(weightFcn)
err = sprintf('"layerWeights{%g,%g}.weightFcn" must be the name of a weight function.',i,j);
return
end
if ~exist(weightFcn)
err = sprintf('"layerWeights{%g,%g}.weightFcn" cannot be set to non-existing function "%s".',i,j,weightFcn);
return
end
% Change net input function
net.layerWeights{i,j}.weightFcn = weightFcn;
% ===========================================================
% FUNCTIONS AND PARAMETERS
% ===========================================================
function [net,err] = setAdaptFcn(net,adaptFcn)
% Check value
err = '';
if ~isstr(adaptFcn)
err = sprintf('"adaptFcn" must be '''' or the name of a network adapt function.');
return
end
if length(adaptFcn) & ~exist(adaptFcn)
err = sprintf('"adaptFcn" cannot be set to non-existing function "%s".',adaptFcn);
return
end
% Change function
net.adaptFcn = adaptFcn;
% Default parameters
if length(adaptFcn)
net.adaptParam = feval(adaptFcn,'pdefaults');
else
net.adaptParam = [];
end
% ===========================================================
function [net,err] = setAdaptParam(net,adaptParam)
% Check value
err = '';
% Change paramters
net.adaptParam = adaptParam;
% ===========================================================
function [net,err] = setInitFcn(net,initFcn)
% Check value
err = '';
if ~isstr(initFcn)
err = sprintf('"initFcn" must be '''' or the name of a network initialization function.');
return
end
if length(initFcn) & ~exist(initFcn)
err = sprintf('"initFcn" cannot be set to non-existing function "%s".',initFcn);
return
end
% Change function
net.initFcn = initFcn;
% Default parameters
if length(initFcn)
net.initParam = feval(initFcn,'pdefaults');
else
net.initParam = [];
end
% ===========================================================
function [net,err] = setInitParam(net,initParam)
% Check value
err = '';
% Change paramters
net.initParam = initParam;
% ===========================================================
function [net,err] = setPerformFcn(net,performFcn)
% Check value
err = '';
if ~isstr(performFcn)
err = sprintf('"performFcn" must be '''' or the name of a network performance function.');
return
end
if length(performFcn) & ~exist(performFcn)
err = sprintf('"performFcn" cannot be set to non-existing function "%s".',performFcn);
return
end
% Change function
net.performFcn = performFcn;
% Default parameters
if length(performFcn)
net.performParam = feval(performFcn,'pdefaults');
else
net.performParam = [];
end
% ===========================================================
function [net,err] = setPerformParam(net,performParam)
% Check value
err = '';
% Change paramters
net.performParam = performParam;
% ===========================================================
function [net,err] = setTrainFcn(net,trainFcn)
% Check value
err = '';
if ~isstr(trainFcn)
err = sprintf('"trainFcn" must be '''' or the name of a network adapt function.');
return
end
if length(trainFcn) & ~exist(trainFcn)
err = sprintf('"trainFcn" cannot be set to non-existing function "%s".',trainFcn);
return
end
% Change function
net.trainFcn = trainFcn;
% Default parameters
if length(trainFcn)
net.trainParam = feval(trainFcn,'pdefaults');
else
net.trainParam = [];
end
% ===========================================================
function [net,err] = setTrainParam(net,trainParam)
% Check value
err = '';
% Change paramters
net.trainParam = trainParam;
% ===========================================================
% UTILITY FUNCTIONS
% ===========================================================
function [subscripts,subs,type,moresubs]=nextsubs(subscripts)
% NEXTSUBS get subscript data from a subscript array.
subs = subscripts(1).subs;
type = subscripts(1).type;
subscripts(1) = [];
moresubs = length(subscripts) > 0;
% ===========================================================
function field = matchstring(field,strings)
% MATCHFIELD replaces FIELD with any field belonging to STRUCTURE
% that is the same when case is ignored.
field2 = lower(field);
for i=1:length(strings)
if strcmp(field2,lower(strings{i}))
field = strings{i};
break;
end
end
% ===========================================================
function field = matchfield(field,structure)
% MATCHFIELD replaces FIELD with any field belonging to STRUCTURE
% that is the same when case is ignored.
f = matchstring(field,fieldnames(structure));
% ===========================================================
function m=resizem(m,r,c)
%RESIZEM Resize matrix by truncating or adding zeros.
[R,C] = size(m);
if (r < R)
m = m(1:r,:);
elseif (r > R)
m = [m; zeros(r-R,C)];
end
if (c < C)
m = m(:,1:c);
elseif (c > C)
m = [m zeros(r,c-C)];
end
% ===========================================================
function mat = setmrows(mat,rows,row)
% SETMROWS removes or adds rows to MAT so that it has ROWS rows.
% If rows are added they are set to ROW.
[m,n] = size(mat);
if (rows < m)
mat = mat(1:rows,:);
elseif (rows > m)
mat = [mat; row(ones(rows-m,1),:)];
end
% ===========================================================
function flag = ismat(mat,m,n)
% ISMAT(MAT,M,N) is true if MAT is a MxN matrix.
% If M or N is NaN, that dimension to be anything.
flag = isa(mat,'double');
if ~flag, return, end
if isnan(m), m = size(mat,1); end
if isnan(n), n = size(mat,2); end
flag = all(size(mat) == [m n]);
% ===========================================================
function flag = isdelay(v)
% ISDELAY(V) is true if V is a delay vector which
% means it must be a vector of increasing integer values.
flag = 1;
if size(v,2) == 0, return, end
flag = 0;
if ~isa(v,'double'); return, end
if any(~isfinite(v)), return; end
if any(v ~= floor(v)), return; end
if size(v,1) ~= 1, return; end
if any(diff(v) <= 0), return; end
flag = 1;
% ===========================================================
function flag = isrealmat(mat,m,n)
% ISREALMAT(MAT,M,N) is true if MAT is a MxN real matrix.
% If M or N is NaN, that dimension to be anything.
flag = isa(mat,'double');
if ~flag, return, end
flag = isreal(mat);
if ~flag, return, end
if isnan(m), m = size(mat,1); end
if isnan(n), n = size(mat,2); end
flag = all(size(mat) == [m n]);
% ===========================================================
function flag = isboolmat(mat,m,n)
% ISBOOLMAT(MAT,M,N) is true if MAT is a MxN bool matrix.
% If M or N is NaN, that dimension to be anything.
flag = isa(mat,'double');
if ~flag, return, end
flag = isreal(mat);
if ~flag, return, end
flag = all(all((mat == 0) | (mat == 1)));
if ~flag, return, end
if isnan(m), m = size(mat,1); end
if isnan(n), n = size(mat,2); end
flag = all(size(mat) == [m n]);
% ===========================================================
function [sub1,err] = subs1(subs,dim)
% SUBS1(SUBS,DIM) converts N-D subscripts SUBS to 1-D equivalents
% given the dimensions DIM of the index space.
err = '';
sub1 = 0;
m = 1:prod(dim);
m = reshape(m,dim);
eval('sub1 = m(subs{:});','err = lasterr;');
sub1 = sub1(:)';
% ===========================================================
function [sub1,sub2,err] = subs2(subs,dim)
% [SUB1,SUB2]=SUBS2(SUBS,DIM) converts N-D subscripts SUBS to
% 1-D equivalents given the dimensions DIM of the index space.
err = '';
sub1 = 0;
sub2 = 0;
m1 = [1:dim(1)]';
m1 = m1(:,ones(1,dim(2)),:);
eval('sub1 = m1(subs{:});','err = lasterr;');
if length(err), return, end
m2 = 1:dim(2);
m2 = m2(ones(1,dim(1)),:);
sub2 = m2(subs{:});
sub1 = sub1(:)';
sub2 = sub2(:)';
% ===========================================================
function flag = isint(mat)
% ISINT checks that a matrix contains only integer values.
flag = 0;
if ~isa(mat,'double'), flag = 1; return, end
if ~isreal(mat), flag = 1; return, end
if any(any(mat ~= floor(mat))), flag = 1; return, end
% ===========================================================
function [o,err]=nsubsasn(o,subscripts,v)
%NSUBSASN General purpose subscript assignment.
% Assume no error
err = '';
% Null case
if length(subscripts) == 0
o = v;
return
end
type = subscripts(1).type;
subs = subscripts(1).subs;
subscripts(1) = [];
o2 = [];
% Paretheses
switch type
case '()'
eval('o2=o(subs{:});','err=lasterr');
if length(err), return, end
[v,err] = nsubsasn(o2,subscripts,v);
if length(err), return, end
eval('o(subs{:})=v;','err=lasterr;')
% Curly bracket
case '{}'
eval('o2=o{subs{:}};','err=lasterr');
if length(err), return, end
[v,err] = nsubsasn(o2,subscripts,v);
if length(err), return, end
eval('o{subs{:}}=v;','err=lasterr;')
% Dot
case '.'
% Match field name regardless of case
if isa(o,'struct') | isa(o,'network')
found = 0;
f = fieldnames(o);
for i=1:length(f)
if strcmp(subs,lower(f{i}))
subs = f{i};
found = 1;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -