Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Dynare
dynare
Commits
4b4de410
Commit
4b4de410
authored
Feb 03, 2014
by
Stéphane Adjemian
Browse files
Added new routine that converts a string of Key-Value pairs in a cell.
parent
c1e0d683
Changes
3
Hide whitespace changes
Inline
Side-by-side
matlab/read_key_value_string.m
0 → 100644
View file @
4b4de410
function
c
=
read_key_value_string
(
s
)
% Transforms a string of Key-Value options as returned by the preprocessor (for optim option in the
% estimation command) into a cell (first column for the option name ans second column for the
% option value).
% Copyright (C) 2011-2013 Dynare Team
%
% This file is part of Dynare.
%
% Dynare is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
% the Free Software Foundation, either version 3 of the License, or
% (at your option) any later version.
%
% Dynare is distributed in the hope that it will be useful,
% but WITHOUT ANY WARRANTY; without even the implied warranty of
% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
% GNU General Public License for more details.
%
% You should have received a copy of the GNU General Public License
% along with Dynare. If not, see <http://www.gnu.org/licenses/>.
iComma
=
strfind
(
s
,
','
);
nComma
=
length
(
iComma
);
if
iseven
(
nComma
)
error
(
'read_key_value_string: Wrong number of Key-Value pairs!'
)
end
c
=
cell
((
nComma
+
1
)/
2
,
2
);
for
i
=
1
:
nComma
j
=
comma2opt
(
i
);
if
j
>
0
,
continue
,
end
if
isequal
(
i
,
1
)
i1
=
1
;
i2
=
iComma
(
i
)
-
1
;
else
i1
=
iComma
(
i
-
1
)
+
1
;
i2
=
iComma
(
i
)
-
1
;
end
if
isequal
(
i
,
nComma
)
i3
=
iComma
(
i
)
+
1
;
i4
=
length
(
s
);
else
i3
=
iComma
(
i
)
+
1
;
i4
=
iComma
(
i
+
1
)
-
1
;
end
c
(
-
j
,
1
)
=
{
s
(
i1
+
1
:
i2
-
1
)};
tmp
=
str2num
(
s
(
i3
:
i4
));
if
isempty
(
tmp
)
c
(
-
j
,
2
)
=
{
s
(
i3
+
1
:
i4
-
1
)};
else
c
(
-
j
,
2
)
=
{
tmp
};
end
end
function
j
=
comma2opt
(
i
)
if
isodd
(
i
)
% The comma is a separator between a Key and a Value (returned j is minus the option number).
j
=
-
(
i
+
1
)/
2
;
else
% The comma is a separator between two options (returned j is the option number).
j
=
i
/
2
;
end
\ No newline at end of file
matlab/utilities/general/iseven.m
0 → 100644
View file @
4b4de410
function
a
=
iseven
(
b
)
% Copyright (C) 2014 Dynare Team
%
% This file is part of Dynare.
%
% Dynare is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
% the Free Software Foundation, either version 3 of the License, or
% (at your option) any later version.
%
% Dynare is distributed in the hope that it will be useful,
% but WITHOUT ANY WARRANTY; without even the implied warranty of
% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
% GNU General Public License for more details.
%
% You should have received a copy of the GNU General Public License
% along with Dynare. If not, see <http://www.gnu.org/licenses/>.
a
=
~
mod
(
b
,
2
);
\ No newline at end of file
matlab/utilities/general/isodd.m
0 → 100644
View file @
4b4de410
function
a
=
isodd
(
b
)
% Copyright (C) 2014 Dynare Team
%
% This file is part of Dynare.
%
% Dynare is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
% the Free Software Foundation, either version 3 of the License, or
% (at your option) any later version.
%
% Dynare is distributed in the hope that it will be useful,
% but WITHOUT ANY WARRANTY; without even the implied warranty of
% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
% GNU General Public License for more details.
%
% You should have received a copy of the GNU General Public License
% along with Dynare. If not, see <http://www.gnu.org/licenses/>.
a
=
mod
(
b
,
2
);
\ No newline at end of file
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment