The items that dis is expecting are rank 1 vectors. So it might make sense to include a rank 1 specification in its definition:
dis =: 4 :'%:+/*:x-y'"1 Does that work for this example? 0 0 dis 1 1,_1 _2,:3 4 1.41421 2.23607 5 ... seems so ... Thanks, -- Raul On Fri, Oct 27, 2017 at 7:11 PM, 'Skip Cave' via Programming <programm...@jsoftware.com> wrote: > In the 2014-11-11 NYCJUG meeting > <http://code.jsoftware.com/wiki/NYCJUG/2014-11-11> there was a discussion > on Euclidean Distance. The verb 'dis' was used to demonstrate how to to > calculate the Euclidean distance between two vectors. > > 0 0 dis 1 1 NB. Euclidean distance 1.41421 1 1,_1 _2,:3 4 NB. Table of 2-D > points 1 1 _1 _2 3 4 0 0 dis 1 1,_1 _2,:3 4 NB. Distances from origin > 1.41421 2.23607 5 0 0 0 dis 1 1 1 NB. Handles higher dimensions 1.73205 > I have a NLP project that needs to calculate the > Euclidean distance between points in a multi-dimensional > space. I now the basic formula - square the differences, > sum the squares, take the square root of the sum: > > dis =. 4 :'%:+/*:x-y' > > 0 0 dis 1 1 > > 1.41421 > 0 0 0 dis 1 1 1 > > 1.73205 > > Looking good.... > > 0 0 dis 1 1,_1 _2,:3 4 > > |length error: dis > > | %:+/*:x -y > > Ooops! > > How can I make dis handle multiple pairs of vectors? > > like: > > (0 0, 2 _3 ,: _1 2) dis 1 1,_1 _2,:3 4 > > 1.41421 3.16228 4.47214 > > Skip Cave > Cave Consulting LLC > ---------------------------------------------------------------------- > For information about J forums see http://www.jsoftware.com/forums.htm ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm