[Scilab-users] Accessing elements sharing an index from a diimension en N-D arrays

Federico Miyara fmiyara at fceia.unr.edu.ar
Tue Jan 21 00:54:13 CET 2020


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);

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.

and

--> A(ans)
  ans  =

    1.
    2.
    3.
    4.
    5.

If I try to assign L(:) to a variable I get

--> u=L(:)

Can not assign multiple value in a single variable

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.

However disp(L(:)) yields

    1.   2.   3.

    1.   2.

    4.

    1.   2.   3.   4.   5.


I would like to understand what's going on.

Regards,

Federico Miyara



On 20/01/2020 05:29, Samuel Gougeon wrote:
> Le 20/01/2020 à 09:18, Federico Miyara a écrit :
>>
>> Dear All,
>>
>> I have an N-D array A (sometimes called hyperarray) with n 
>> dimensions, where n is a parameter a priori unknown since it is, for 
>> instance, an input argument of a function. So in conceptual form each 
>> element is
>>
>> A(k1, k2, k3, ..., kn)
>>
>> I'm looking for an elegant way to extract all elements with a given 
>> index over a given dimension, for instance
>>
>> A(:, k2, :, ..., :)
>>
>> This would mean to get an hyperarray made up of the k2-th column of 
>> all remaining dimensions.
>>
>> If extraction could be performed replacing the indexes by a list, for 
>> instance
>>
>> L = list(),
>> for i=1:n
>>    L($+1) = 1:size(A)(i);
>> end
>> L(2) = 1
>>
>> Then A(L) would work, but the result is an error message "Invalid index".
>
>
> A(L(:)) should do it.
>
>
>
> _______________________________________________
> users mailing list
> users at lists.scilab.org
> http://lists.scilab.org/mailman/listinfo/users

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


More information about the users mailing list