help-octave
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: negative indexing of matrix or general access


From: Zbigniew Komarnicki
Subject: Re: negative indexing of matrix or general access
Date: Wed, 8 Oct 2008 09:39:06 +0200
User-agent: KMail/1.9.9

Hello again :-)

I would like to start writing a such package. After reading your and Soren 
hints, i thing that it can be created for example as new object (as for 
example a cell; writing e.g A=cell(1,10) give us a cell array with given size 
[1,10]). Now i think, that we can create a new object for example

B=array([-3,3],[2,5])

and we get "normal matrix/array" but with additional property within this 
object as:
min_idx_1=-3 , max_idx_1=3
min_idx_2= 2 , max_idx_2=5

These indices of course internally can be stored as linked list in C++ or 
dynamically created array. It will be depends from the dimension of such 
array, for example:
C=array([-2,10],[0,3],[1,7])  % 3-dimensional array
so the indices will be
min_idx_1=-2 , max_idx_1=10
min_idx_2= 0 , max_idx_2=3
min_idx_3= 0 , max_idx_3=7


Writing B=array([-3,3],[2,5]) will be obligatory to create such object. To 
create normal matrix (or vector if 1 dimension array) we should use for 
example such calling:
D=matrix(B);   % or in function call e.g:  my_func(matrix(B)); 

and this calling will be create normal matrix 1 index based as normal matrix 
in octave, so we will be get
D(1:7,1:4)

I don't know that it will be OK, e.g that will be effective (fast execution) 
and simple in using to the end user giving him only two simple functions 
(constructors) such as:
* "array" - to create object with arbitrary indices
* "matrix" - to go back to normal object without arbitrary indices, but the 
standard one (as now in octave starting from 1)

Of course we can add additionally functions for example to deal with indices 
(in order to creating new object to have the same size or not), e.g.

[min_max_indices]=getarrayindices(B)
then we will obtain
min_max_indices=
-3 3
2 5

where, 'min_max_indices' can be e.g cell array, or  as above a matrix
min_max_indices =
{
  [1,1] = -3
  [2,1] =  2
  [1,2] =  3
  [2,2] =  5
}


Then we can create e.g:
F=array(min_max_indices)

Function 'size':
s=size(B)
s=
7 4

Function 'type':
type('B')
B is variable array with
min_max_indices=
dim1: -3 3
dim2: 2 5

And many other additional functions which will be usefull.

What do you think about such proposition? We do not need hold strictly 
definition of Fortran array. I only give it as an example.

Creating 'view' is to complicated to me, and I suppose it will be also to 
complicated to other inexperience users.
I prefer simple functions, as simple as possible.

What do you think? It have a sense, what I propose?

Thank you for your time.

Best wishes,
Zbigniew



reply via email to

[Prev in Thread] Current Thread [Next in Thread]