Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
HomeAnnouncementsWhite Papers
Discussion GroupsFirst AidDatabasesJavaBeansGUIJava 3DVirtual MachineCORBASecurityToolsGeneral
Java DirectoryOpen Source ProjectsSample Book ChaptersUser GroupsWeb Resources
Related Topics
Databases.NETMore Topics ...

Java Forum / General / August 2006

Tip: Looking for answers? Try searching our database.

arbitrary dimension array for math

Thread view: 
Dimitri Ognibene - 08 Aug 2006 10:19 GMT
Hi,
I need some help writing a class implementing operations on arbitrary
dimension array, and be able to apply operation like block extraction,
vector or matrix product , filter (product for a matrix of smaller
dimension, kind of mask)
I'm writing the code but it is rather complicated, and so it's cool,
but it could be useful to have some example.
Please if you know any solution, library or example, let me know
Thanks Dimitri
Stefan Ram - 08 Aug 2006 10:46 GMT
>I'm writing the code but it is rather complicated, and so it's cool,
>but it could be useful to have some example.

 I wrote the following code as an example to show how to
 dynamically create and fill an arrays whose arbitrary
 extensions and arbitrary dimension is only known at run-time.

 Here it is suppossed to have 3 dimensions with extensions 4,
 5, and 6, respectively.

public class Main
{
 public static int[] cdr( final int[] list )
 { return java.util.Arrays.copyOfRange( list, 1, list.length ); }

 public static java.lang.Object build( final int ... extensions )
 { final java.lang.Object array = java.lang.reflect.Array.newInstance
   ( java.lang.Integer.TYPE, extensions );  
   for( int i = 0; i < extensions[ 0 ]; ++i )if( extensions.length > 1 )
   java.lang.reflect.Array.set( array, i, build( cdr( extensions )));
   else java.lang.reflect.Array.setInt(( int[] )array, i, i );
   return array; }

 public static void print( final java.lang.Object array )
 { for( int i = 0; i < java.lang.reflect.Array.getLength( array ); ++i )
   if( array.getClass().getName().startsWith( "[[" ))
   print( java.lang.reflect.Array.get( array, i )); else
   java.lang.System.out.print( java.lang.reflect.Array.getInt( array, i )); }
   
 public static void main( final java.lang.String[] args )
 { print( build( 4, 5, 6 )); }}
 
012345012345012345012345012345012345012345012345012345012345012345012345012345012345012345012345012345012345012345012345
Dimitri Ognibene - 08 Aug 2006 11:48 GMT
thanks stefan,
I'm know very few of reflection, I used it years ago only for oo-db
mapping...
Do you know if there are any perfomance issues?
here is my simple constructor, still writing subblock extraction:
public MultiDimensionalMatrix(int[] _dimension) {
       dimensions=_dimension;
       strides=new int[dimensions.length];
       strides[dimensions.length-1]=1;
       for (int i = 0; i < dimensions.length-1; i++)
           strides[dimensions.length-2-i]=

strides[dimensions.length-1-i]*dimensions[dimensions.length-1-i];
       flatDimension=strides[0]*dimensions[0];

       flatData=new double[flatDimension];
   }

public final int[] getCoordinates(final int point_index,int result[]) {
       if (result==null)result=new int[dimensions.length];

       for (int j = 0; j < strides.length; j++) {
           result [j]=((point_index/strides[j])%dimensions[j]);
       }

       return result;
   }

....
...
thanks very *1000 much
Dimitri
Using strides i could be able to implement the various operation, i
think, but long time has gone from my math programming courses..
for some kind of operation the structure can be easily reconstructed by
the alg... i think..
any tip?
Do you think reflection     is the right way to go?
thanks

> >I'm writing the code but it is rather complicated, and so it's cool,
> >but it could be useful to have some example.
[quoted text clipped - 29 lines]
>
> 012345012345012345012345012345012345012345012345012345012345012345012345012345012345012345012345012345012345012345012345
Stefan Ram - 08 Aug 2006 12:00 GMT
>Do you know if there are any perfomance issues?

 Reflection, in general, will be slower than non-reflective
 access.

 You also could implement a 3-dimensional matrix as a
 1-dimensional array, and calculate the array offset for the
 matrix component [i,j,k] as i*(n*m)+j*m+k.

 This also can be written for a dynamic dimension.
Dimitri Ognibene - 08 Aug 2006 10:47 GMT
for arbitrary dimension i mean a class wich at run time can be seen, as
a[]
or a[][]
or a[][][]
or a[][][][]

Becouse I have some algs that are invariant, theoretically on this kind
of structure but don't wont to write a version of them for every
option..
thanks
> Hi,
> I need some help writing a class implementing operations on arbitrary
[quoted text clipped - 5 lines]
> Please if you know any solution, library or example, let me know
> Thanks Dimitri
Thomas Weidenfeller - 08 Aug 2006 11:09 GMT
> I'm writing the code but it is rather complicated, and so it's cool,
> but it could be useful to have some example.
> Please if you know any solution, library or example, let me know

If your Google broken? Already the first hit from googleing
http://www.google.de/search?q=Java+math+matrix looks interesting.

/Thomas
Signature

The comp.lang.java.gui FAQ:
ftp://ftp.cs.uu.nl/pub/NEWS.ANSWERS/computer-lang/java/gui/faq
http://www.uni-giessen.de/faq/archiv/computer-lang.java.gui.faq/

Chris Uppal - 08 Aug 2006 11:49 GMT
> If your Google broken? Already the first hit from googleing
> http://www.google.de/search?q=Java+math+matrix looks interesting.

Two dimensional only (as is the companion package, Jampack).

I don't know of a arbitrary-dimensional package myself.  There would be some
very "interesting" design problems...

   -- chris
Dimitri Ognibene - 08 Aug 2006 11:50 GMT
yes.. it is very "interesting", damn'it, :D

> > If your Google broken? Already the first hit from googleing
> > http://www.google.de/search?q=Java+math+matrix looks interesting.
[quoted text clipped - 5 lines]
>
>     -- chris


Free Magazines

Get these publications absolutely FREE for up to 12 months. There are no hidden fees and no obligation. Simply choose a title, complete the application form and submit it. Read more ...

Oracle MagazineNetwork ComputingComputer WorldBio-IT WorldeWeekInformation WeekInfosecurity
 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2009 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.