Yes, that's very helpful. Thanks for clarifying this for me. Joe
-----Original Message----- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Dan Bron Sent: Wednesday, June 07, 2006 2:02 PM To: Programming forum Subject: Re: [Jprogramming] Matrix x Vector List Joe, When you have a dyadic verb (one which takes both a left and a right argument), and you want to apply that verb to different size pieces ("cells") of the arguments, use the rank conjunction " . In your case, you want to pair the rows of the left argument with the table of the right argument. Rows have one dimension, and so are rank 1 , tables have two dimensions, and so are rank 2 . Consequently, you want to do: short_data =: }:"1 data short_data x"1 2 yuvmat which results in an N by 3 table, where N is #data . I, personally, would write: short_data x"_1 _ yuvmat which means "pair the /items/ of the left argument with the /entire/ of the right argument.". The items of short_data happen to be rows, and the entire of yuvmat happens to be a table. The results are unchanged. Essentially, what " does is pair up the requested parts ("cells") of the two arguments, then applies the verb between them. That is, for each item (row) in short_data, it takes a copy of the entire (table) yuvmat, and matrix-multiplies the two. You can experiment with other cells: show_pairings =: ,&:< short_data show_pairings"1 2 yuvmat short_data show_pairings"_1 _ yuvmat short_data show_pairings"0 2 yuvmat short_data show_pairings"1 0 yuvmat Hope this helps, -Dan ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm
