Re: Implementing own data functions
- To: mathgroup at smc.vnet.net
- Subject: [mg84185] Re: Implementing own data functions
- From: dh <dh at metrohm.ch>
- Date: Wed, 12 Dec 2007 20:03:16 -0500 (EST)
- References: <fjkqi6$kh3$1@smc.vnet.net>
Hi Mac,
what you call Data Functions is nothing else than ordinary functions
that you may define yourselve.
E.g. assume we have objects: obj1 and obj2. They have attributes color:
col1,col2 and size: siz1,siz2 and "name" (only to have show that it also
works with a string): "nam1", "nam2". We may nor define:
Attrib[obj1,color]=col1;
Attrib[obj2,color]=col2;
Attrib[obj1,size]=siz1;
Attrib[obj2,size]=siz2;
Attrib[obj1,"name"]="nam1";
Attrib[obj2,"name"]="nam2";
if you now say Attrib[obj2,color] you get col2 or Attrib[obj2,"name"]
you get "name2".
hope this helps, Daniel
Mac wrote:
> Mathematica 6 comes with useful data functions covering topics ranging
> from financial data to chemical isotope decay chains. Having
> established the syntax and functionality through these functions, it
> would make sense to me if there was a mechanism for users to build up
> their own data functions. It would be a useful way of sharing data
> with other users.
>
> Unfortunately I haven't come across any tutorial or description of how
> data functions are implemented. As far as I can make out some of the
> features of data functions are similar to associative arrays (or
> hashes) as found in other languages such as Perl. Indeed, I've
> starting putting together some very simple data on radar satellite
> missions and launch rockets but using a simple 1 level hash-like
> syntax. An example is provided below.
>
> Does anybody have a better insight or examples of how WRI data
> functions are implemented and could be made to work for individual
> efforts ?
>
> Many thanks
>
> Mac
>
> Here an example for the Japanese JERS-1 satellite
>
> Clear[jers1, keys]
> keys[hash_] := Map[#[[1, 1, 1]] &, DownValues[hash]];
> jers1["Platform"] = {
> {"Dates",
> "monthdayyear", {"February 11, 1992", "October 11, 1992"}},
> {"Repeatcycle", "days", 44},
> {"Altitude", "km", 568},
> {"OrbitInclination", "deg", 97.67},
> {"Rollerr", "deg", 0.12},
> {"Rollerr", "deg", 0.16},
> {"Yawerr", "deg", 0.13}
> };
> jers1["SARPayload"] = {
> {"Frequency", "Ghz", 1.275},
> {"AntennaLength", "m", 11.9 },
> {"AntennaWidth", "m", 2.4},
> {"Bandwidth", "MHz", 15},
> {"PRF", "Hz", {1505, 1602}},
> {"Look direction", " ", "right"},
> {"NumberModes", " ", 1}};
>
>