1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
|
// Copyright (C) 2018 - IIT Bombay - FOSSEE
// This file must be used under the terms of the CeCILL.
// This source file is licensed as described in the file COPYING, which
// you should have received as part of this distribution. The terms
// are also available at
// http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
// Author: Abinash Singh Under FOSSEE Internship
// Modifieded by: Abinash Singh Under FOSSEE Internship
// Last Modified on : 3 Feb 2024
// Organization: FOSSEE, IIT Bombay
// Email: toolbox@scilab.in
function res = postpad(x,l,c,dim)
// Calling Sequence :
// postpad (x, l)
// postpad (x, l, c)
// postpad (x, l, c, dim)
// Append the scalar value c to the vector x until it is of length l. If c is not given, a value of 0 is used.
// If length (x) > l, elements from the end of x are removed until a vector of length l is obtained.
// If x is a matrix, elements are appended or removed from each row.
// If the optional argument dim is given, operate along this dimension.
// If dim is larger than the dimensions of x, the result will have dim dimensions.
if nargin < 2 then
error("Usage : postpad(x,l,c(optional),dim(optional))")
end
if nargin < 3 then
c = 0 ;
end
if nargin <= 4 then
if size(x,1) == 1 then
dim = 1 ;
elseif size(x,2) == 1 then
dim = 2 ;
else
dim = 2 ; // FIXME dim functionality not implemented
end
end
if l < size(x,dim) then
error("l must be greater then dimension of x")
end
select dim
case 1 then
res = [x c*ones(size(x,1),l-size(x,2))];
case 2 then
res = [x;c*ones(l-size(x,1),size(x,2))];
end
endfunction
/*
#test for row vectors
postpad([1 2 3 4],6) //passed
postpad([1 ;2 ;3 ;4],6) // passed
postpad([1 2 3 4;5 6 7 8;9 10 11 12],6) // passed
postpad([1 2 ;3 4;5 6],6,-1) //passed
*/
|