diff --git a/matlab/dynare_config.m b/matlab/dynare_config.m
index e5812af90ed2856d782fce5d9372daf83ccd7bbb..6463a7506b7d735ccd5fda99ca5d6f8c322674f8 100644
--- a/matlab/dynare_config.m
+++ b/matlab/dynare_config.m
@@ -118,6 +118,11 @@ if (isoctave && ~user_has_octave_forge_package('statistics')) ...
     p{end+1} = '/missing/nanmean';
 end
 
+% Check if struct2array is available.
+if ~exist('struct2array')
+    p{end+1} = '/missing/struct2array';
+end
+
 P = cellfun(@(c)[dynareroot(1:end-1) c], p, 'uni',false);
 
 % Get mex files folder(s)
diff --git a/matlab/missing/struct2array/struct2array.m b/matlab/missing/struct2array/struct2array.m
new file mode 100644
index 0000000000000000000000000000000000000000..b1c1370dd3b9e475c13cec32636aef38e6406215
--- /dev/null
+++ b/matlab/missing/struct2array/struct2array.m
@@ -0,0 +1,29 @@
+function a = struct2array(s)
+
+% INPUTS 
+% - s  [struct]  with N fields, field i contains a n_i*m_i array of doubles.
+%
+% OUPUTS 
+% - a  [double]  column vector with sum(n_i*m_i, i=1,...,N) elements.
+
+% Copyright (C) 2017 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/>.
+
+assert(isstruct(s), 'struct2array:: Argument has to be a structure!')
+
+c = cellfun(@vec, struct2cell(s), 'UniformOutput', false);
+a = vertcat(c{:});
\ No newline at end of file