https://github.com/Data2Dynamics/d2d
Tip revision: d72d4c223fb8adc0e3e44a1d3d1eafce18b995ae authored by Andreas Raue on 06 March 2015, 00:17:07 UTC
Increase C version code, after Joep's submits today to prevent compatibility problems
Increase C version code, after Joep's submits today to prevent compatibility problems
Tip revision: d72d4c2
arSetPars.m
% set parameter value by label
%
% arSetPars(pLabel, p, qFit, qLog10, lb, ub, type, meanp, stdp)
%
% pLabel name of the parameter
% p value of the parameter
% qFit 0=fixed, 1=fitted, 2=constant
% qLog10 0=normal, 1=log10 parameter values
% lb lower parameter bound
% ub upper parameter bound
% type 0=box prior, 1=normal prior
% meanp mean of normal prior
% stdp standard deviation of normal prior
function arSetPars(pLabel, p, qFit, qLog10, lb, ub, type, meanp, stdp)
global ar
if(isempty(ar))
error('please initialize by arInit')
end
if(~iscell(pLabel))
pLabel = {pLabel};
end
if(nargin>1 && ~isempty(p) && length(p)==1)
p = zeros(size(pLabel)) + p;
end
if(nargin>2 && ~isempty(qFit) && length(qFit)==1)
qFit = zeros(size(pLabel)) + qFit;
end
if(nargin>3 && ~isempty(qLog10) && length(qLog10)==1)
qLog10 = zeros(size(pLabel)) + qLog10;
end
if(nargin>4 && ~isempty(lb) && length(lb)==1)
lb = zeros(size(pLabel)) + lb;
end
if(nargin>5 && ~isempty(ub) && length(ub)==1)
ub = zeros(size(pLabel)) + ub;
end
if(nargin>6 && ~isempty(type) && length(type)==1)
type = zeros(size(pLabel)) + type;
end
if(nargin>7 && ~isempty(meanp) && length(meanp)==1)
meanp = zeros(size(pLabel)) + meanp;
end
if(nargin>8 && ~isempty(stdp) && length(stdp)==1)
stdp = zeros(size(pLabel)) + stdp;
end
for j=1:length(pLabel)
q = ismember(ar.pLabel, pLabel(j)); %R2013a compatible
if(sum(q)==1)
if(nargin>1 && ~isempty(p))
ar.p(q) = p(j);
if(nargin>4 && ~isempty(lb))
if(p(j) < lb(j))
error('trying to set p < lb');
end
else
if(p(j) < ar.lb(q))
error('trying to set p < lb');
end
end
if(nargin>5 && ~isempty(ub))
if(p(j) > ub(j))
error('trying to set p > ub');
end
else
if(p(j) > ar.ub(q))
error('trying to set p > ub');
end
end
end
if(nargin>2 && ~isempty(qFit))
ar.qFit(q) = qFit(j);
end
if(nargin>3 && ~isempty(qLog10))
ar.qLog10(q) = qLog10(j);
end
if(nargin>4 && ~isempty(lb))
ar.lb(q) = lb(j);
end
if(nargin>5 && ~isempty(ub))
ar.ub(q) = ub(j);
end
if(nargin>6 && ~isempty(type))
ar.type(q) = type(j);
end
if(nargin>7 && ~isempty(meanp))
ar.mean(q) = meanp(j);
end
if(nargin>8 && ~isempty(stdp))
ar.std(q) = stdp(j);
end
elseif(sum(q)==0)
fprintf('arSetPars: parameter %s not found\n', pLabel{j});
else
error('multiple parameters %s!?', pLabel{j});
end
end