cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
  • JMP will suspend normal business operations for our Winter Holiday beginning on Wednesday, Dec. 24, 2025, at 5:00 p.m. ET (2:00 p.m. ET for JMP Accounts Receivable).
    Regular business hours will resume at 9:00 a.m. EST on Friday, Jan. 2, 2026.
  • We’re retiring the File Exchange at the end of this year. The JMP Marketplace is now your destination for add-ins and extensions.

Discussions

Solve problems, and share tips and tricks with other JMP users.
%3CLINGO-SUB%20id%3D%22lingo-sub-41284%22%20slang%3D%22en-US%22%20mode%3D%22NONE%22%3E%E6%89%80%E6%9C%89%E9%BB%9E%E4%B9%8B%E9%96%93%E7%9A%84%E7%B5%95%E5%B0%8D%E5%80%BC%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-41284%22%20slang%3D%22en-US%22%20mode%3D%22NONE%22%3E%3CP%3E%E6%88%91%E6%83%B3%E7%9F%A5%E9%81%93%E6%98%AF%E5%90%A6%E6%9C%89%E4%B8%80%E7%A8%AE%E7%B0%A1%E5%96%AE%E7%9A%84%E6%96%B9%E6%B3%95%E5%8F%AF%E4%BB%A5%E5%B0%87%E4%B8%80%E5%88%97%E4%B8%AD%E6%89%80%E6%9C%89%E9%BB%9E%E7%9A%84%E7%B5%95%E5%B0%8D%E5%80%BC%E7%9B%B8%E4%BA%92%E8%81%9A%E5%90%88%E3%80%82%20%E6%88%91%E7%B7%A8%E5%AF%AB%E4%BA%86%E4%B8%80%E4%BA%9B%E8%85%B3%E6%9C%AC%EF%BC%8C%E9%80%99%E4%BA%9B%E8%85%B3%E6%9C%AC%E5%B0%87%E7%82%BA%E6%88%91%E6%8F%90%E4%BE%9B%E5%B7%A5%E5%85%B7%E7%9A%84%E9%9A%8E%E6%AE%B5%E4%BD%8D%E7%BD%AE%E6%95%B8%E6%93%9A%EF%BC%8C%E4%BD%86%E6%88%91%E6%83%B3%E4%BA%86%E8%A7%A3%E9%80%99%E4%BA%9B%E4%BD%8D%E7%BD%AE%E5%A6%82%E4%BD%95%E7%9B%B8%E5%B0%8D%E6%96%BC%E8%87%AA%E8%BA%AB%E8%80%8C%E4%B8%8D%E6%98%AF%E6%A9%9F%E5%99%A8%E7%9A%84%E7%B5%95%E5%B0%8D%E4%BD%8D%E7%BD%AE%E9%80%B2%E8%A1%8C%E6%B8%AC%E9%87%8F%E3%80%82%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3E%E4%BE%8B%E5%A6%82%EF%BC%9A%3C%2FP%3E%3CP%3E%E5%A6%82%E6%9E%9C%E6%88%91%E6%9C%89%203%20%E9%BB%9E%EF%BC%8C%E6%88%91%E6%83%B3%E7%9F%A5%E9%81%93%201-2%E3%80%811-3%20%E5%92%8C%202-3%20%E4%B9%8B%E9%96%93%E7%9A%84%E8%B7%9D%E9%9B%A2%E3%80%82%3C%2FP%3E%3CP%3E%E5%A6%82%E6%9E%9C%E6%88%91%E6%9C%89%204%20%E5%80%8B%E9%BB%9E%EF%BC%8C%E6%88%91%E6%83%B3%E7%9F%A5%E9%81%93%201-2%E3%80%811-3%E3%80%811-4%E3%80%812-3%E3%80%812-4%20%E5%92%8C%203-4%20%E4%B9%8B%E9%96%93%E7%9A%84%E8%B7%9D%E9%9B%A2%E3%80%82%3C%2FP%3E%3CP%3E%E7%AD%89%E7%AD%89...%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3E%E5%B0%8D%E6%96%BC%E5%B0%8F%E5%9E%8B%E6%95%B8%E6%93%9A%E9%9B%86%EF%BC%8C%E9%80%99%E5%8F%AF%E4%BB%A5%E8%BC%95%E9%AC%86%E5%AE%8C%E6%88%90%EF%BC%8C%E4%BD%86%E6%88%91%E7%9A%84%E6%95%B8%E6%93%9A%E9%9B%86%E7%AF%84%E5%9C%8D%E7%82%BA%2020-100%20%E5%80%8B%E9%BB%9E%E3%80%82%20%E6%88%91%E6%AD%A3%E5%9C%A8%E5%B0%8B%E6%89%BE%E5%85%A7%E7%BD%AE%E7%9A%84%E6%9D%B1%E8%A5%BF%E6%88%96%E8%80%85%E5%8F%AF%E8%83%BD%E6%98%AF%E7%B7%A8%E5%AF%AB%E8%A7%A3%E6%B1%BA%E6%96%B9%E6%A1%88%E7%9A%84%E6%83%B3%E6%B3%95%E3%80%82%20%E4%BB%BB%E4%BD%95%E5%B9%AB%E5%8A%A9%E6%B7%B1%E8%A1%A8%E6%84%9F%E8%AC%9D%E3%80%82%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-41330%22%20slang%3D%22en-US%22%20mode%3D%22NONE%22%3E%E5%9B%9E%E5%A4%8D%EF%BC%9A%E6%89%80%E6%9C%89%E9%BB%9E%E4%B9%8B%E9%96%93%E7%9A%84%E7%B5%95%E5%B0%8D%E5%80%BC%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-41330%22%20slang%3D%22en-US%22%20mode%3D%22NONE%22%3E%3CP%3E%E5%AE%8C%E7%BE%8E%E7%9A%84%EF%BC%81%20%E8%AC%9D%E8%AC%9D%EF%BC%8C%E9%80%99%E5%B0%8D%E6%88%91%E7%9A%84%E7%94%B3%E8%AB%8B%E4%BE%86%E8%AA%AA%E7%A2%BA%E5%AF%A6%E5%BE%88%E5%AE%B9%E6%98%93%E3%80%82%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3E%E6%88%91%E6%AD%A3%E5%9C%A8%E9%81%8B%E8%A1%8C%E4%B8%80%E5%80%8B%20python%20%E8%85%B3%E6%9C%AC%EF%BC%8C%E8%A9%B2%E8%85%B3%E6%9C%AC%E5%BE%9E%20XML%20%E6%96%87%E4%BB%B6%E4%B8%AD%E6%8F%90%E5%8F%96%E4%BD%8D%E7%BD%AE%E6%95%B8%E6%93%9A%EF%BC%8C%E7%84%B6%E5%BE%8C%E5%B0%87%E5%85%B6%E8%AE%80%E5%8F%96%E5%88%B0%20CSV%20%E4%B8%AD%E3%80%82%20%E7%84%B6%E5%BE%8C%E6%88%91%E4%BD%BF%E7%94%A8%20JMP%20%E5%88%86%E6%9E%90%20CSV%20%E4%B8%AD%E7%9A%84%E9%9A%8E%E6%AE%B5%E4%BD%8D%E7%BD%AE%E3%80%82%20%E6%89%80%E4%BB%A5%EF%BC%8C%E6%88%91%E9%82%84%E6%B2%92%E6%9C%89%E4%BB%BB%E4%BD%95%E5%85%B6%E4%BB%96%20jsl%20%E4%BE%86%E5%AE%8C%E6%88%90%E6%88%91%E6%83%B3%E5%81%9A%E7%9A%84%E4%BA%8B%E6%83%85%E3%80%82%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-41327%22%20slang%3D%22en-US%22%20mode%3D%22NONE%22%3E%E5%9B%9E%E5%A4%8D%EF%BC%9A%E6%89%80%E6%9C%89%E9%BB%9E%E4%B9%8B%E9%96%93%E7%9A%84%E7%B5%95%E5%B0%8D%E5%80%BC%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-41327%22%20slang%3D%22en-US%22%20mode%3D%22NONE%22%3E%3CP%3E%E6%88%91%E6%83%B3%E2%80%9C%E6%9B%B4%E5%AE%B9%E6%98%93%E2%80%9D%E5%8F%96%E6%B1%BA%E6%96%BC%E6%82%A8%E7%9A%84%E4%BB%A3%E7%A2%BC%E9%82%84%E5%81%9A%E4%BB%80%E9%BA%BC%E4%BB%A5%E5%8F%8A%E5%A6%82%E4%BD%95%E5%81%9A%E3%80%82%20%E4%BD%86%E5%A6%82%E6%9E%9C%E4%BD%A0%E5%B8%8C%E6%9C%9B%E7%9F%A9%E9%99%A3%E6%98%AF%E4%B8%8B%E4%B8%89%E8%A7%92%E7%9F%A9%E9%99%A3%EF%BC%8C%E4%BD%A0%E5%8F%AF%E4%BB%A5%E4%BD%BF%E7%94%A8%EF%BC%9A%3C%2FP%3E%0A%3CPRE%3E%3CCODE%20class%3D%22%20language-jsl%22%3ENames%20Default%20To%20Here(%201%20)%3B%0A%2F%2F%20Data%0Av%20%3D%20%5B1%2C%202%2C%203%2C%204%5D%3B%0A%2F%2F%20Compute%20Euclidean%20distance%20between%20all%20pairs%20of%20points%0Adm%20%3D%20Sqrt(Distance(v%2C%20v))%3B%0A%2F%2F%20Make%20matrix%20dm%20lower%20triangular%0Adm2%20%3D%20J(NRow(dm)%2C%20NCol(dm)%2C%20.)%3B%0Afor%20(r%3D1%2C%20r%26lt%3B%3DNRow(dm)%2C%20r%2B%2B%2C%0A%20dm2%5Br%2C%201%3A%3Ar%5D%20%3D%20dm%5Br%2C%201%3A%3Ar%5D%3B%0A)%3B%0Adt%20%3D%20AsTable(dm2)%3B%3C%2FCODE%3E%3C%2FPRE%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-41317%22%20slang%3D%22en-US%22%20mode%3D%22NONE%22%3E%E5%9B%9E%E5%A4%8D%EF%BC%9A%E6%89%80%E6%9C%89%E9%BB%9E%E4%B9%8B%E9%96%93%E7%9A%84%E7%B5%95%E5%B0%8D%E5%80%BC%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-41317%22%20slang%3D%22en-US%22%20mode%3D%22NONE%22%3E%3CP%3E%E5%BE%88%E6%A3%92%E7%9A%84%E8%A7%A3%E6%B1%BA%E6%96%B9%E6%A1%88%EF%BC%81%20%E5%85%A9%E8%80%85%E9%83%BD%E9%9D%9E%E5%B8%B8%E9%81%A9%E5%90%88%E6%88%91%E6%AD%A3%E5%9C%A8%E5%81%9A%E7%9A%84%E4%BA%8B%E6%83%85%E3%80%82%20%E6%88%91%E5%96%9C%E6%AD%A1%E2%80%9CDistance()%E2%80%9D%E5%87%BD%E6%95%B8%EF%BC%8C%E6%88%91%E5%BF%85%E9%A0%88%E9%80%B2%E4%B8%80%E6%AD%A5%E7%A0%94%E7%A9%B6%E5%AE%83%E3%80%82%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3E%E6%88%91%E6%9C%89%E4%B8%80%E5%80%8B%E5%BE%8C%E7%BA%8C%E5%95%8F%E9%A1%8C%EF%BC%9A%3CBR%20%2F%3E%E9%80%99%E5%85%A9%E7%A8%AE%E8%A7%A3%E6%B1%BA%E6%96%B9%E6%A1%88%E6%9C%AC%E8%B3%AA%E4%B8%8A%E9%83%BD%E6%9C%83%E7%94%A2%E7%94%9F%E4%B8%80%E5%80%8B%E7%9F%A9%E9%99%A3%EF%BC%8C%E5%85%B6%E4%B8%AD%E5%8C%85%E5%90%AB%E5%96%AE%E5%85%83%E4%B8%AD%E6%AF%8F%E5%80%8B%E9%BB%9E%E4%B9%8B%E9%96%93%E7%9A%84%E8%B7%9D%E9%9B%A2%E3%80%82%20%E6%88%91%E6%83%B3%E7%9F%A5%E9%81%93%E6%98%AF%E5%90%A6%E6%9C%89%E4%B8%80%E7%A8%AE%E7%B0%A1%E5%96%AE%E7%9A%84%E6%96%B9%E6%B3%95%E5%8F%AF%E4%BB%A5%E5%88%AA%E9%99%A4%E7%9F%A9%E9%99%A3%E7%9A%84%E4%B8%8B%E4%B8%89%E8%A7%92%E5%BD%A2%E6%88%96%E4%B8%8A%E4%B8%89%E8%A7%92%E5%BD%A2%EF%BC%9F%20%E6%88%91%E4%B8%8D%E9%9C%80%E8%A6%81%E9%9B%99%E6%96%B9%EF%BC%8C%E9%80%99%E5%B0%87%E4%BD%BF%E5%88%86%E6%9E%90%E6%9B%B4%E5%AE%B9%E6%98%93%E3%80%82%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-41310%22%20slang%3D%22en-US%22%20mode%3D%22NONE%22%3E%E5%9B%9E%E5%A4%8D%EF%BC%9A%E6%89%80%E6%9C%89%E9%BB%9E%E4%B9%8B%E9%96%93%E7%9A%84%E7%B5%95%E5%B0%8D%E5%80%BC%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-41310%22%20slang%3D%22en-US%22%20mode%3D%22NONE%22%3E%3CP%3E%E5%A5%BD%E7%9A%84%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-41309%22%20slang%3D%22en-US%22%20mode%3D%22NONE%22%3E%E5%9B%9E%E5%A4%8D%EF%BC%9A%E6%89%80%E6%9C%89%E9%BB%9E%E4%B9%8B%E9%96%93%E7%9A%84%E7%B5%95%E5%B0%8D%E5%80%BC%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-41309%22%20slang%3D%22en-US%22%20mode%3D%22NONE%22%3E%3CP%3E%E6%82%A8%E9%82%84%E5%8F%AF%E4%BB%A5%E4%BD%BF%E7%94%A8%E2%80%9CDistance()%E2%80%9D%E5%87%BD%E6%95%B8%EF%BC%88%E8%AB%8B%E5%8F%83%E9%96%B1%E2%80%9C%E5%B9%AB%E5%8A%A9%20%26gt%3B%20%E8%85%B3%E6%9C%AC%E6%8C%87%E5%8D%97%E2%80%9D%EF%BC%89%EF%BC%9A%3C%2FP%3E%0A%3CPRE%3E%3CCODE%20class%3D%22%20language-jsl%22%3ENames%20Default%20To%20Here(%201%20)%3B%0A%2F%2F%20Data%0Av%20%3D%20%5B1%2C%202%2C%203%2C%204%5D%3B%0A%2F%2F%20Compute%20Euclidean%20distance%20between%20all%20pairs%20of%20points%0Adm%20%3D%20Sqrt(Distance(v%2C%20v))%3B%0Adt%20%3D%20AsTable(dm)%3B%3C%2FCODE%3E%3C%2FPRE%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-41285%22%20slang%3D%22en-US%22%20mode%3D%22NONE%22%3E%E5%9B%9E%E5%A4%8D%EF%BC%9A%E6%89%80%E6%9C%89%E9%BB%9E%E4%B9%8B%E9%96%93%E7%9A%84%E7%B5%95%E5%B0%8D%E5%80%BC%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-41285%22%20slang%3D%22en-US%22%20mode%3D%22NONE%22%3E%3CP%3E%E6%88%91%E8%AA%8D%E7%82%BA%E9%80%99%E5%8F%AF%E8%83%BD%E6%9C%83%E9%81%94%E5%88%B0%E4%BD%A0%E6%83%B3%E8%A6%81%E7%9A%84%E6%95%88%E6%9E%9C%EF%BC%9A%3C%2FP%3E%0A%3CPRE%3E%3CCODE%20class%3D%22%20language-jsl%22%3ENames%20Default%20To%20Here(%201%20)%3B%0Adt%20%3D%20Open(%20%22%24SAMPLE_DATA%5Cbig%20class.jmp%22%20)%3B%0Aa%20%3D%20dt%3Aweight%20%26lt%3B%26lt%3B%20get%20values%3B%0Ab%20%3D%20a%3B%0Ac%20%3D%20%5B%5D%3B%0AFor(%20i%20%3D%201%2C%20i%20%26lt%3B%3D%20N%20Rows(%20a%20)%2C%20i%2B%2B%2C%0A%20c%20%3D%20c%20%7C%7C%20abs(%20a%5Bi%5D%20-%20b)%3B%0A%20dt%20%26lt%3B%26lt%3B%20New%20Column(%20%22col%22%20%7C%7C%20Char(%20i%20)%2C%20values(%20c%5B0%2C%20i%5D%20)%20)%3B%0A)%3B%3C%2FCODE%3E%3C%2FPRE%3E%3C%2FLINGO-BODY%3E
Choose Language Hide Translation Bar
SG
SG
Level III

Absolute value between all points

I was wondering if there is an easy way to aggregate the absolute value of all points in a column to one another. I have written some scripts which will give me the stage location data for a tool, but I want to see how the locations measure up relative to themselves rather than the absolute locations of the machine.

 

For example:

If I have 3 points, I want to know the distance between 1-2, 1-3, and 2-3.

If I have 4 points, I want to know the distance between 1-2, 1-3, 1-4, 2-3, 2-4, and 3-4.

And so on...

 

For small data sets this can easily be done, but I have data sets ranging from 20-100 points. I am looking for something built in or possibly an idea to script the solution. Any help is much appreciated.

1 ACCEPTED SOLUTION

Accepted Solutions
ian_jmp
Level X

Re: Absolute value between all points

I guess that 'easier' depends on what else your code does, and how. But if you want teh matrix to be lower triangular you could use:

Names Default To Here( 1 );
// Data
v = [1, 2, 3, 4];
// Compute Euclidean distance between all pairs of points
dm = Sqrt(Distance(v, v));
// Make matrix dm lower triangular
dm2 = J(NRow(dm), NCol(dm), .);
for (r=1, r<=NRow(dm), r++,
	dm2[r, 1::r] = dm[r, 1::r];
);
dt = AsTable(dm2);

View solution in original post

6 REPLIES 6
txnelson
Super User

Re: Absolute value between all points

I think this might do what you want:

Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA\big class.jmp" );
a = dt:weight << get values;
b = a;
c = [];
For( i = 1, i <= N Rows( a ), i++,
	c = c || abs( a[i] - b);
	dt << New Column( "col" || Char( i ), values( c[0, i] ) );
);
Jim
ian_jmp
Level X

Re: Absolute value between all points

You might also use the 'Distance()' function (see 'Help > Scripting Guide'):

Names Default To Here( 1 );
// Data
v = [1, 2, 3, 4];
// Compute Euclidean distance between all pairs of points
dm = Sqrt(Distance(v, v));
dt = AsTable(dm);
txnelson
Super User

Re: Absolute value between all points

Nice

Jim
SG
SG
Level III

Re: Absolute value between all points

Awesome solutions! Both work really well for what I'm doing. I like the 'Distance()' function, I'll have to look into it more.

 

I have a follow up question:
Both these solutions essentially produce a matrix with the distance between each point in the cell. I was wondering if there is an easy way to remove either the lower or upper triangle of the matrix? I don't need both sides and it will make analysis easier.

ian_jmp
Level X

Re: Absolute value between all points

I guess that 'easier' depends on what else your code does, and how. But if you want teh matrix to be lower triangular you could use:

Names Default To Here( 1 );
// Data
v = [1, 2, 3, 4];
// Compute Euclidean distance between all pairs of points
dm = Sqrt(Distance(v, v));
// Make matrix dm lower triangular
dm2 = J(NRow(dm), NCol(dm), .);
for (r=1, r<=NRow(dm), r++,
	dm2[r, 1::r] = dm[r, 1::r];
);
dt = AsTable(dm2);
SG
SG
Level III

Re: Absolute value between all points

Perfect! Thank you, this was indeed easy for my application.

 

I have a python script running that extracts and then reads the location data from an XML file into a CSV. Then I am using JMP to analyze the stage locations from the CSV. So, I don't have any other jsl for what I'm trying to do...yet.

Recommended Articles