[Scilab-users] Overloading "inv" and/or "p" does not seem to work with Scilab 6.1.0

Stéphane Mottelet stephane.mottelet at utc.fr
Thu May 7 15:11:10 CEST 2020


Hi,

Le 07/05/2020 à 14:58, CRETE Denis a écrit :
> Hello,
>
> I redefined a few functions in Scilab 6.1.0 to extend them to arrays 
> with 3 dimensions (formerly called hypermatrix). Overloading works 
> with "clean", "multiply", "left division" and "element by element 
> division" (after defining functions %s_clean, %s_m_s, %s_l_s and %s_d_s).

clean and element by element division do not need overloading:

--> clean(ones(2,2,2))
  ans  =

(:,:,1)

    1.   1.
    1.   1.
(:,:,2)

    1.   1.
    1.   1.

--> ones(2,2,2)./ones(2,2,2)
  ans  =

(:,:,1)

    1.   1.
    1.   1.
(:,:,2)

    1.   1.
    1.   1.

S.

>
> I tried to overload function "inv" with the following code:
>
> function y=%s_inv(x),
>     if ndims(x)>2 then
>         for k=1:size(x,3),
>             y(:,:,k)=inv(x(:,:,k));
>         end;
>     else
>         y=inv(x);
>     end;
> endfunction
>
> expecting that each layer of y is the reciprocal of corresponding 
> layer of x. Instead,
> inv(ones(1,1,2).*.rand(2,2)) returns the reciprocal of x layer 1 in y 
> layer 1 AND x LAYER n IN y LAYER n, WHEN n>1. I use "layer" to 
> designate the matrix obtain for a fixed value the index along the 3rd 
> dimension.
>
> Code to reproduce the problem:
>
> n=4; m=3;
> M=ones(1,1,n).*.rand(m,m);
> inv(M)
>
> Attempts to circumvent this problem by using M^(-1) instead of inv(M) 
> run into the same problem (after redefining function %s_p). Is this a 
> bug or did I miss something ?
>
> In the mean time, I avoided overloading the function "inv" and renamed 
> "%s_inv" to "inverse" to do successfully call "inverse(M)"...
>
> Best regards
> Denis
>
>
> _______________________________________________
> users mailing list
> users at lists.scilab.org
> https://antispam.utc.fr/proxy/1/c3RlcGhhbmUubW90dGVsZXRAdXRjLmZy/lists.scilab.org/mailman/listinfo/users

-- 
Stéphane Mottelet
Ingénieur de recherche
EA 4297 Transformations Intégrées de la Matière Renouvelable
Département Génie des Procédés Industriels
Sorbonne Universités - Université de Technologie de Compiègne
CS 60319, 60203 Compiègne cedex
Tel : +33(0)344234688
http://www.utc.fr/~mottelet

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.scilab.org/pipermail/users/attachments/20200507/db2e35a0/attachment.htm>


More information about the users mailing list