]> Creatis software - CreaPhase.git/blob - octave_packages/communications-1.1.1/vec2mat.m
Add a useful package (from Source forge) for octave
[CreaPhase.git] / octave_packages / communications-1.1.1 / vec2mat.m
1 ## Copyright (C) 2001 Laurent Mazet
2 ##
3 ## This program is free software; you can redistribute it and/or modify it under
4 ## the terms of the GNU General Public License as published by the Free Software
5 ## Foundation; either version 3 of the License, or (at your option) any later
6 ## version.
7 ##
8 ## This program is distributed in the hope that it will be useful, but WITHOUT
9 ## ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
10 ## FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
11 ## details.
12 ##
13 ## You should have received a copy of the GNU General Public License along with
14 ## this program; if not, see <http://www.gnu.org/licenses/>.
15
16 ## -*- texinfo -*-
17 ## @deftypefn {Function File} {@var{m} = } vec2mat (@var{v}, @var{c})
18 ## @deftypefnx {Function File} {@var{m} = } vec2mat (@var{v}, @var{c}, @var{d})
19 ## @deftypefnx {Function File} {[@var{m}, @var{add}] = } vec2mat (@dots{})
20 ##
21 ## Converts the vector @var{v} into a @var{c} column matrix with row priority
22 ## arrangement and with the final column padded with the value @var{d} to the
23 ## correct length. By default @var{d} is 0. The amount of padding added to
24 ## the matrix is returned in @var{add}.
25 ## @end deftypefn
26
27 ## 2001-02-02
28 ##   initial release
29
30 function [M, d] = vec2mat (V, c, val)
31
32   switch (nargin)
33     case 1,
34       M = V;
35       return;
36     case 2,
37       val = 0;
38     case 3,
39       val = val;
40     otherwise
41       error ("usage: [M, add] = vec2mat (V, c [, d])");
42   endswitch
43
44   V = V.';
45   V = V(:);
46
47   r = ceil (length (V) / c);
48
49   d = r * c - length (V);
50   if (d != 0)
51     V = [ V ; val*ones(d, 1) ];
52   endif
53
54   M = reshape (V, c, r).';
55
56 endfunction