From 31d4fe5e6d6accf4633648fc9625a801fe0d1449 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Adjemian=20=28Charybdis=29?= Date: Wed, 20 Mar 2013 17:10:13 +0100 Subject: [PATCH] Added new routine to insert column vector in a matrix. --- matlab/insert_column_vector_in_a_matrix.m | 66 +++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 matlab/insert_column_vector_in_a_matrix.m diff --git a/matlab/insert_column_vector_in_a_matrix.m b/matlab/insert_column_vector_in_a_matrix.m new file mode 100644 index 000000000..e12de7fa5 --- /dev/null +++ b/matlab/insert_column_vector_in_a_matrix.m @@ -0,0 +1,66 @@ +function matrix = insert_column_vector_in_a_matrix(matrix, vector, i) + +% Copyright (C) 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 . + +if nargin<2 + error('insert_column_vector_in_a_matrix: I need at least two input arguments!') +end + +if ~isequal(ndims(matrix),2) + error(['insert_column_vector_in_a_matrix: First input ''' inputname(1) ''' must be a matrix!']) +end + +[n,m] = size(matrix); + +if nargin<3 + i = m+1; +end + +if ~isvector(vector) || ~isequal(numel(vector),size(vector,1)) || ~isequal(numel(vector),n) + error(['insert_column_vector_in_a_matrix: Second input argument ''' inputname(2) ''' must be a ' int2str(n) ' by 1 vector!']) +end + +switch i + case m+1 + matrix = [matrix, vector]; + case 1 + matrix = [vector, matrix]; + otherwise + matrix = [matrix(:,1:i-1), vector, matrix(:,i:m)]; +end + +%@test:1 +%$ % Define a datasets. +%$ A = rand(8,3); b = rand(8,1); +%$ +%$ try +%$ A4 = insert_column_vector_in_a_matrix(A, b); +%$ A1 = insert_column_vector_in_a_matrix(A, b, 1); +%$ A2 = insert_column_vector_in_a_matrix(A, b, 2); +%$ t(1) = 1; +%$ catch +%$ t(1) = 0; +%$ end +%$ +%$ if t(1) +%$ t(2) = dyn_assert(A4,[A,b],1e-15); +%$ t(3) = dyn_assert(A1,[b,A],1e-15); +%$ t(4) = dyn_assert(A2,[A(:,1), b, A(:,2:end)],1e-15); +%$ end +%$ T = all(t); +%@eof:1 \ No newline at end of file