<html dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css" id="owaParaStyle"></style>
</head>
<body fpstyle="1" ocsi="0">
<div style="direction: ltr;font-family: Tahoma;color: #000000;font-size: 10pt;">
<div>Hello,</div>
<div><br>
</div>
<div>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).</div>
<div>
<div><br>
</div>
<div>I tried to overload function "inv" with the following code:</div>
</div>
<div><br>
function y=%s_inv(x),<br>
    if ndims(x)>2 then<br>
        for k=1:size(x,3),<br>
            y(:,:,k)=inv(x(:,:,k));<br>
        end;<br>
    else <br>
        y=inv(x);<br>
    end;<br>
endfunction</div>
<div><br>
</div>
<div>expecting that each layer of y is the reciprocal of corresponding layer of x. Instead,
<br>
</div>
<div>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.</div>
<div><br>
</div>
<div>Code to reproduce the problem:</div>
<div><br>
</div>
<div>n=4; m=3;<br>
</div>
<div>M=ones(1,1,n).*.rand(m,m);</div>
<div>inv(M)</div>
<div><br>
</div>
<div>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 ?</div>
<div><br>
</div>
<div>In the mean time, I avoided overloading the function "inv" and renamed "%s_inv" to "inverse" to do successfully call "inverse(M)"...
<br>
</div>
<div><br>
</div>
<div>Best regards</div>
<div>Denis<br>
</div>
<div><br>
</div>
</div>
</body>
</html>