a=:(0 0, 2 _3 ,: _1 2)
   a
 0  0
 2 _3
_1  2
   ]b=:1 1,_1 _2,:3 4
 1  1
_1 _2
 3  4

   a(4 :'+/ &.: *:x-y' "1)b    NB. Under since Square Root is obverse
(inverse) of Square
1.41421 3.16228 4.47214
   a((+/ &.: *:)@: -) "1 b     NB. in a tacit way
1.41421 3.16228 4.47214
   a([: (+/ &.: *:) -) "1 b
1.41421 3.16228 4.47214
   a([: +/ &.: *: -) "1 b
1.41421 3.16228 4.47214

   a(+/ &.: *:@: -) "1 b
1.41421 3.16228 4.47214
   ((+/ &.: *:)@: -) "1        NB. Parentheses help readability but are
not needed
+/&.:*:@:-"1
   a(+/ &.: *:@: - "1 )b
1.41421 3.16228 4.47214



Le 2017-10-27 à 22:48, 'Skip Cave' via Programming a écrit :
> Raul,
>
> Yes, rank was the problem. It hit me while I was eating dinner
> but your solution was different than what I expected (they usually are):
>
> Raul:
>
>      dis =.4 :'%:+/*:x-y' "1
>
>      (0 0, 2 _3 ,: _1 2) dis 1 1,_1 _2,:3 4
>
> 1.41421 3.16228 4.47214
>
>
>        0 0 dis 1 1,_1 _2,:3 4
>
> 1.41421 2.23607 5
>
>
> I need to study this more. My solution was:
>
>      dis =. 4 :'%:+/"1 *:x-y'
>
>
>      (0 0, 2 _3 ,: _1 2) dis 1 1,_1 _2,:3 4
>
> 1.41421 3.16228 4.47214
>
>
>      0 0 dis 1 1,_1 _2,:3 4
>
> |length error: dis
>
> |     %:+/"1*:x -y
>
>
> So my scheme doesn't work for one-to-many. It just works on one-to-one
>
> & many-to-many (both nouns must be the same size).
>
> I had no idea you could put the rank operator outside the quotes!
>
> Where does the language description doc discuss this trick?
>
>
> Skip
>
> Skip Cave
> Cave Consulting LLC
>
> On Fri, Oct 27, 2017 at 7:03 PM, Raul Miller <rauldmil...@gmail.com> wrote:
>
>> 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
> ----------------------------------------------------------------------
> 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