📄 process_params(1).m
字号:
function [p1, p2, p3, p4, p5, p6, p7, p8, p9, p10] = process_params(params)
%This function recieves a parameter vector and returns it's components
[p1, p2, p3, p4, p5, p6, p7, p8, p9, p10] = deal([]);
if isnumeric(params),
%The parameter vector is completely numeric. This is much simpler
for i = 1:length(params),
eval(['p' num2str(i) ' = ' num2str(params(i)) ';']);
end
Nassigned = length(params);
else
comma_loc = findstr(params,',');
Nassigned = 0;
%First, locate any sub-parameter vectors
bracket_loc1 = findstr(params,'[');
bracket_loc2 = findstr(params,']');
if (length(bracket_loc1) ~= length(bracket_loc2)),
error('The number of opening and closing brackets in the parameter vectors is not equal!')
end
switch length(bracket_loc1),
case 0
error('No opening brackets in the parameter vector!')
case 1
if ((bracket_loc1 == 1) & (bracket_loc2 == length(params))),
%This are just the usual opening and closing brackets
params = [',', params(2:end-1), ','];
comma_loc = findstr(params,',');
else
error('There are erroneous square brackets in the parameter vector!')
end
otherwise
if ((bracket_loc1(1) == 1) & (bracket_loc2(end) == length(params))),
params = [',', params(2:end-1), ','];
bracket_loc1 = bracket_loc1(2:end);
bracket_loc2 = bracket_loc2(1:end-1);
comma_loc = findstr(params,',');
end
for i = 1:length(bracket_loc1),
%Find the next comma after the closing bracket
close_loc = bracket_loc2(i);
open_loc = bracket_loc1(i);
close_comma = find(comma_loc < open_loc);
close_comma = close_comma(end);
eval(['p' num2str(close_comma) ' = ' params(open_loc:close_loc) ';']);
Nassigned = Nassigned + 1;
end
%Now remove these sub-parameters
for i = 1:length(bracket_loc1),
bracket_loc1 = findstr(params,'['); bracket_loc1 = bracket_loc1(1);
bracket_loc2 = findstr(params,']'); bracket_loc2 = bracket_loc2(1);
if (bracket_loc1 ~= bracket_loc2 - 1),
params = params([1:bracket_loc1-1,bracket_loc2+1:end]);
Nassigned = Nassigned - 1;
end
end
end
%Now assign the remaining parameters to p's
comma_loc = findstr(params,',');
for i = 1:length(comma_loc)-1,
if (eval(['isempty(p' num2str(i) ')'])),
tempp = params(comma_loc(i)+1:comma_loc(i+1)-1);
eval(['p' num2str(i) ' = ' deblank(tempp) ';']);
Nassigned = Nassigned + 1;
end
end
end
if (Nassigned ~= nargout),
warning('Not all parameters in the parameter vector were read by the algorithm')
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -