[Scilab-users] Accessing elements sharing an index from a diimension en N-D arrays
Samuel Gougeon
sgougeon at free.fr
Fri Jan 24 01:31:28 CET 2020
Le 21/01/2020 à 00:54, Federico Miyara a écrit :
>
> Samuel,
>
> Thanks VERY much!
>
> It certainly does the job, but I don't quite understand how. For
> example, to retrieve the last columns of all dimensions:
>
>
> A = matrix(1:120, [5,4,2 3]);
>
> L = list();
> for i=1:length(size(A))
> L($+1) = 1:size(A)(i);
> end
>
> L(2) = size(A)(2);
// or
L = list();
for i = 1:ndims(A)
L($+1) = :;
end
L(2) = $;
>
> B = A(L(:));
>
> B is exactly the desiredresult. But when I try to see what is L(:) I get
>
> --> L(:)
> ans =
>
> 1. 2. 3. 4. 5.
Yes, it's a bit tricky: L(:) extracts all L components, but there is no
LHS recipient except the invisible ans. Then, only ans is assigned, to
L(1). Other L(2:$) are ignored.
> .../...
>
> If I try to assign L(:) to a variable I get
>
> --> u=L(:)
>
> Can not assign multiple value in a single variable
This is somewhat reported here: http://bugzilla.scilab.org/14372
>
> So I attempt
>
> --> [u1,u2,u3,u4] = L(:)
>
> and get
>
>
> u4 =
>
> 1. 2. 3.
> u3 =
>
> 1. 2.
> u2 =
>
> 4.
> u1 =
>
> 1. 2. 3. 4. 5.
This is described on https://help.scilab.org/docs/6.0.2/en_US/brackets.html
>
> ../..
>
> I would like to understand what's going on.
(a,b,c) is the smart Scilab "deal()" operator:
[a, b, c] = (3, 1, -2)
--> [a, b, c] = (3, "Hi", -2)
a =
3.
b =
Hi
c =
-2
Regards
Samuel
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.scilab.org/pipermail/users/attachments/20200124/ea25eb35/attachment.htm>
More information about the users
mailing list