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

Reply via email to