Le 23/01/2016 22:17, Samuel Gougeon a écrit :
Le 23/01/2016 17:43, fujimoto2005 a écrit :
Let X be a m×n matrix and f(i) is a column index for the ith row.
I want to get a m×1 vector y where y(i)=X(i,f(i)) for 1<=i<=m.
Is there any method to get y other than  the following code?
for i=1:m
    y(i)=X(i,f(i));
end
Yes:
y = X((f-1)*m+i)
with i = 1:m. So:

y = X((f-1)*m + 1:m)

Example:
--> m = 7; n = 5;
--> // X = grand(m, n,"uin", 0, 9)
 X  = [
    2.    5.    9.    9.    0.
    2.    8.    0.    3.    1.
    4.    3.    9.    9.    2.
    5.    5.    4.    6.    9.
    4.    5.    7.    6.    9.
    1.    0.    6.    6.    8.
    9.    6.    9.    3.    6.
 ]
-->i = 1:m
 i  =
    1.    2.    3.    4.    5.    6.    7.

-->// f = grand(1, m,"uin", 1, n)

 f  = [    1.    4.    4.    3.    4.    5.    2.  ]

-->X((f-1)*7+i)
 ans  =

    2.
    3.
    9.
    4.
    6.
    8.
    6.

SG

_______________________________________________
users mailing list
[email protected]
http://lists.scilab.org/mailman/listinfo/users

Reply via email to