updt
Francois Delebecque [Thu, 23 Sep 2004 12:10:37 +0000 (12:10 +0000)]
scilab_doc/intro/diary/d1p.code
scilab_doc/intro/diary/d1p15.code
scilab_doc/intro/diary/d1p16.code
scilab_doc/intro/diary/d2.10a.code
scilab_doc/intro/diary/demo1.code
scilab_doc/intro/diary/extract.code
scilab_doc/intro/diary/list.code
scilab_doc/intro/diary/loader.sce [new file with mode: 0644]
scilab_doc/intro/diary/myplus.c [new file with mode: 0644]

index fae91c8..453dd0f 100755 (executable)
@@ -20,6 +20,10 @@ p=poly([1 2 3],'z','coeff')
 //p can also be defined by :
 s=poly(0,'s');p=1+2*s+s^2
 diary(0)
+diary('d1p41.dia')
+Params.tol=[0.01,0.002]; Params.errmsg='error message';
+Params.tol(2)
+diary(0)
 diary('d1p5.dia')
 M=[p, p-1; p+1 ,2]
 det(M)
index b634c93..1d4a6bd 100755 (executable)
@@ -1,7 +1,7 @@
 //Saving the environment in a file named : myfile
 save('myfile')
 //Request to the host system to perform a system command
-unix_s('rm myfile')
+unix_s('rm myfile')   //unix_s('del myfile');
 //Request to the host system with output in this Scilab window
-unix_w('date')
+unix_w('date')    //unix_w('dir')
 
index b7c370c..ede0422 100755 (executable)
@@ -1,12 +1,25 @@
-foo=['void foo(a,b,c)';
-     'double *a,*b,*c;'
-      '{ *c = *a + *b;}']
-//A 3 x 1 matrix of strings
-write('foo.c',foo);      //Editing
-unix_s('make foo.o')     //Compiling
-link('foo.o','foo','C'); //Dynamic link
-//On line definition of myplus function. 
-//(Calling external C code).
-deff('[c]=myplus(a,b)',...
-   'c=call(''foo'',a,1,''d'',b,2,''d'',''out'',[1,1],3,''d'')')
-myplus(5,7)
+foo=['int myplus(n, a, b, c)'
+    'int *n;     double *a, *b, *c;'
+    '{int k;'
+    '  for (k = 0; k < *n; ++k) '
+    '      c[k] = a[k] + b[k];'
+    '  return(0);}'];
+
+mputl(foo,'myplus.c');   //create a myplus.c file
+
+ilib_for_link('myplus','myplus.o',[],"c");  //make a shared library
+
+exec loader.sce;  //exec file created by ilib_for_link
+// to link the library (.so file or .dll file);
+
+function c=myplus(a,b)
+[m,n]=size(a);  //assume size(b) == size(a)!
+//a at position 2, b at 3 and c at 4.
+c=call('myplus',m*n,1,'i',a,2,'d',b,3,'d',...
+       'out',[m,n],4,'d');
+endfunction
+
+myplus([1,2],[3,4])
+
+
+
index 218c999..1ab39a4 100755 (executable)
@@ -3,5 +3,4 @@ s=poly(0,'s');
 t=poly(0,'t');
 p=list(t^2+2*t^3,-t-t^2,t,1+0*t);
 pst=makefunction(p)
-pst
 pst(1)
index 2854143..6c73776 100755 (executable)
@@ -26,12 +26,18 @@ Sp=sparse([1,2;4,5;3,10],[1,2,3])   //sparse matrix
 
 Sp(1,10)==Sp(1,1)                   //boolean sparse matrix
 
-//                 3. LISTS
+//                 3. LISTS/STRUCTURES
 L=list(a,-(1:5), Mp,['this','is';'a','list'])   //list
 L(2)(3)     //sub-entry in list
 Lt=tlist(['mylist','color','position','weight'],'blue',[0,1],10)  //typed-list
-Lt('color')      //extracting
-Lt('weight')     //extracting
+Lt.color      //extracting
+Lt.weight     //extracting
+//
+Struct.f1='hello'  //Defining a structure.
+Struct.f2=rand(2,2);
+Struct.f2
+Struct.f2(2,1)
+
 A=diag([2,3,4]);B=[1 0;0 1;0 0];C=[1 -1 0];D=0*C*B;x0=[0;0;0];
 Sl=syslin('c',A,B,C,D,x0)    //Standard state-space linear system 
 Sl.A, Sl.C             //Retrieving elements of a typed list
@@ -134,7 +140,7 @@ H=[1.    1.    1.    0.;
    1.    0.    1.    1.;
    0.    1.    2.   -1];
 
-ww=spec(H)
+ww=spec(H)  //eigenvalues
 
 //             STABLE SUBSPACES
 [X,d]=schur(H,'cont');
@@ -143,23 +149,20 @@ X'*H*X
 [X,d]=schur(H,'disc');
 X'*H*X
 
-//Selection of user-defined eigenvalues (# 3 and 4 here);
+//Selection of user-defined eigenvalues;
 function flg=sel(x)
-  flg=0,ev=x(2)/x(3),
-  if abs(ev-ww(3))<0.0001|abs(ev-ww(4))<0.00001 then flg=1,end
+//x=tested eigenval. flg=1 iff x is selected.
+  flg=0;
+  if abs(x)< 1 then flg=1,end 
 endfunction
 [X,d]=schur(H,sel)
 
 X'*H*X
 
-//               With matrix pencil
-[X,d]=gschur(H,eye(H),sel)
-X'*H*X
-
 //            block diagonalization
-[ab,x,bs]=bdiag(H);
+[Hb,x,bs]=bdiag(H);
 
-inv(x)*H*x
+inv(x)*H*x  //Compare with Hb
 
 //                     Matrix pencils
 E=rand(3,2)*rand(2,3);
@@ -191,5 +194,6 @@ write('foo.c',foo);
 unix_s('make foo.o')     //Compiling...(needs a compiler)
 link('foo.o','foo','C')    //Linking to Scilab
 //5+7 by C function
-fort('foo',5,1,'d',7,2,'d','out',[1,1],3,'d')
+call('foo',5,1,'d',7,2,'d','out',[1,1],3,'d')
+
 
index cb0fe10..17e715e 100755 (executable)
@@ -1,38 +1,34 @@
-A=[1 2 3;4 5 6]
-A(1,2)
-A([1 1],2)
-A(:,1)
-A(:,3:-1:1)
-A(1)
-A(6)
-A(:)
-A([%t %f %f %t])
-A([%t %f],[2 3])
-A(1:2,$-1)
-A($:-1:1,2)
-A($)
-//
-x='test'
-x([1 1;1 1;1 1])
-//
-B=[1/%s,(%s+1)/(%s-1)]
-B(1,1)
-B(1,$)
-B(2) // the numerator
-//  
-A=[1 2 3;4 5 6]
-A(1,2)=10
-A([1 1],2)=[-1;-2]
-A(:,1)=[8;5]
-A(1,3:-1:1)=[77 44 99]
-A(1,:)=10
-A(1)=%s
-A(6)=%s+1
-A(:)=1:6
-A([%t %f],1)=33
-A(1:2,$-1)=[2;4]
-A($:-1:1,1)=[8;7]
-A($)=123
-//
-x='test'
-x([4 5])=['4','5']
+A=[1 2 3;4 5 6];
+A(1,2);  //Entry at row 1 and column 2
+A([1;1],2);   //Same as [A(1,2);A(1,2)]
+A(:,1);   //All rows, first column
+A(:,3:-1:1)  //all rows, first column reversed
+A(1);   // First entry A(1,1)
+[A(6) A($)]   //Last entry
+A(:);    //All entries as a column
+A([%t %f %f %t])  //Selection of entries
+A([%t %f],[2 3])   //...
+A(1:2,$-1);   //rows 1 and 2 and column 2
+A($:-1:1,2);    //reversed rows, column 2
+x='test';   //string
+x([1 1;1 1;1 1])   //string matrix
+B=[1/%s,(%s+1)/(%s-1)];  //Rational matrix
+[B(1,1) B(1,$)]   //Extract from rational matrix
+B.num // the numerator
+A=[1 2 3;4 5 6];
+A(1,2)=10;   //Changing A(1,2)
+A([1 1],2)=[-1;-2]  //A(1,2)=-1; A(1,2)=-2;
+A(:,1)=[8;5];
+A(1,3:-1:1)=[77 44 99];
+A(1,:)=10;  //All entries of first row set to 10
+A(1)=%s;  //A is now a polynomial matrix
+A($)=%s+1;  //Changing last entry od=f A
+A(:)=1:6;  //Re-assign all entries of A
+A([%t %f],1)=33    //A(1,1)=33
+A(1:2,$-1)=[2;4];
+A($:-1:1,1)=[8;7];
+A($)=123;
+x='test';
+x([4 5])=['4','5'];  //String vector
+
+
index ee984e3..2c4524c 100755 (executable)
@@ -1,35 +1,28 @@
 a=33;b=11;c=0;
-l=list();l(0)=a
-l=list();l(1)=a
-l=list(a);l(2)=b
-l=list(a);l(0)=b
-l=list(a);l(1)=c
-l=list();l(0)=null()
-l=list();l(1)=null()
-//
+l=list();l(0)=a;  //Add at begining
+l=list();l(1)=a;  //Change first entry
+l=list(a);l(2)=b;  //Add at end
+l=list(a);l(0)=b;  //Add at begining
+l=list(a);l(1)=c;
+l=list();l(0)=null();   //Empty list
+l=list();l(1)=null();
 i='i';
-l=list(a,list(c,b),i);l(1)=null()
+l=list(a,list(c,b),i);l(1)=null();
 l=list(a,list(c,list(a,c,b),b),'h');
-l(2)(2)(3)=null()
-//
+l(2)(2)(3)=null();
 dts=list(1,tlist(['x';'a';'b'],10,[2 3]));
-dts(2).a
-dts(2).b(1,2)
-[a,b]=dts(2)(['a','b'])
-//
-l=list(1,'qwerw',%s)
-l(1)='Changed'
-l(0)='Added'
-l(6)=['one more';'added']
-//
+dts(2).a;   //Field a in second entry of dts
+dts(2).b(1,2);   // entry (1,2) of matrix dts(2).b
+[a,b]=dts(2)(['a','b']); //Assign two variables
+l=list(1,'qwerw',%s);  
+l(1)='Changed';  //modifying a list
+l(0)='Added';    //Add at begining
+l(6)=['one more';'added'];  //Undefined entries 
 dts=list(1,tlist(['x';'a';'b'],10,[2 3]));
-dts(2).a=33
-dts(2).b(1,2)=-100
-//
+dts(2).a=33;   //Set field a of dts(2) to 33
+dts(2).b(1,2)=-100;  //...
 l=list(1,'qwerw',%s);
-l(1)
-[a,b]=l([3 2])
-l($)
-//
-L=list(33,list(l,33))
+[a,b]=l([3 2]);  //Defining both a and b
+l($);   //last entry
+L=list(33,list(l,33));  //entry 2 of L is a list
 
diff --git a/scilab_doc/intro/diary/loader.sce b/scilab_doc/intro/diary/loader.sce
new file mode 100644 (file)
index 0000000..2d4f257
--- /dev/null
@@ -0,0 +1,4 @@
+// generated by builder.sce: Please do not edit this file
+// ------------------------------------------------------
+myplus_path=get_absolute_file_path('loader.sce');
+link(myplus_path+'libmyplus.so',['myplus'],'c');
diff --git a/scilab_doc/intro/diary/myplus.c b/scilab_doc/intro/diary/myplus.c
new file mode 100644 (file)
index 0000000..694cbae
--- /dev/null
@@ -0,0 +1,6 @@
+int myplus(n, a, b, c)
+int *n;     double *a, *b, *c;
+{int k;
+  for (k = 0; k < *n; ++k) 
+      c[k] = a[k] + b[k];
+  return(0);}