summaryrefslogtreecommitdiff
path: root/modules/string/macros/asciimat.sci
diff options
context:
space:
mode:
Diffstat (limited to 'modules/string/macros/asciimat.sci')
-rwxr-xr-xmodules/string/macros/asciimat.sci60
1 files changed, 60 insertions, 0 deletions
diff --git a/modules/string/macros/asciimat.sci b/modules/string/macros/asciimat.sci
new file mode 100755
index 000000000..ebfc0a771
--- /dev/null
+++ b/modules/string/macros/asciimat.sci
@@ -0,0 +1,60 @@
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) ???? - INRIA - Scilab
+//
+// 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.1-en.txt
+
+function y=asciimat(x)
+ // This function converts a matrix of string into a matrix of ascii codes using ascii() Scilab function
+ // and converts an array of ascii codes into a array of string
+ // Returned value have same size as input value instead of second dims !
+ // Fonction created because ascii() Scilab function returns a row vector
+ if size(size(x),"*")<=2 then
+ if type(x)==10 then
+ if x==[] then
+ y=[]
+ return
+ else
+ ytemp=[];
+ for i=1:size(x,1)
+ ytemp=[ytemp ascii(x(i,:))]
+ end
+ nbcol= size(ytemp,"*")*size(x,2)/size(x,"*")
+ if nbcol-floor(nbcol)<>0 then
+ error(msprintf(gettext("%s: Wrong input argument #%d: Inconsistent size.\n"),"asciimat", 1));
+ end
+ y=[]
+ for i=1:size(x,1)
+ y=[y ;ytemp(1+(i-1)*nbcol:i*nbcol)]
+ end
+ end
+ elseif type(x)==1 | type(x)==8 then
+ y=[]
+ for k=1:size(x,1)
+ y(k)=ascii(x(k,:))
+ end
+ else
+ error(msprintf(gettext("%s: Wrong type for input argument #%d: A Real, Integer or String matrix expected.\n"),"asciimat", 1));
+ end
+ elseif size(size(x),"*")>2 then
+ if typeof(x)=="hypermat" then
+ if type(x.entries)==1 | type(x.entries)==8
+ n=size(size(x),"*")
+ dims=size(x)
+ dims=[dims(1),dims(3:n)]
+ V=" "
+ D=prod(dims)
+ DD=D/size(x,1)
+ V=part(V,ones(1,size(x,2)))
+ V=V+emptystr(D,1)
+ for l=1:DD
+ V((l-1)*size(x,1)+1:l*size(x,1))=asciimat(x(:,:,l))
+ end
+ y=hypermat(dims,V)
+ end
+ end
+ end
+endfunction