Mx A programming language for scientific computation Related Languages Matlab IDL Maple Mathcad Mathematica Goals Portability interpreted and executed by a java interpreter Efficiency greatly improves programming efficiency Program involving many matrix and vector operations are very short in Mx Ease of use very simple and quick to start What can the language do Basic matrix operations addition multiplication Advanced operations matrix slicing and masking Internal functions Print input load save plot paint Operations and Relations Arithmetic Operations Logical Operations not and or Relational Operations Array and Range Range Specifier i e A 1 10 1 2 i e A 1 2 Array Constructor 1 2 3 4 Statements Block Statement iteration for n 1 100 loop if exp stat if exp stat else stat break continue Assignments Conditional Statements Break and Continue Functions and Function call Self Defined Functions func id para list exp func id para list Function Call id para list Note can either be stand lone or right value depends on if it has returned value Internal functions Console output print print arguments to the standard output one by one Picture drawing paint draws a matrix in a new window as an image plot takes a matrix and plots it as a graph Color color sets the current color in RGB colormap take a matrix with rows as RGB and sets a colormap File I O functions load file type m n save matrix file type Matrix generator zeros m n random m n matrix operator inv matrix flip matrix Example 1 Mr Potato A load potato dat byte 128 128 colormap 1 paint A flip A mirror A flip mirror A A flip A mirror A flip mirror A return 0 Overview of the interpreter Currently the Mx programming language is implemented interpretively The interpreter parses and executes the user input or programs in files and generates printed output and or pictures The parser of the interpreter is written in Antlr and the rest routines are in Java For a small portion of our code we tried macro expansion in Java Adequate functionalities made our project quite large luckily most of the functions are tested and work well maybe we have forgotten the existences of some functions Code Statistics Parts Frontend Statistics 481 lines Total Interpret Matrix er class test code 2090 941 2731 5891 lines generated code not included partial currently in CVS Why another matrix class The Mx programming language has important functionalities in place matrix slicing and masking Existing Java matrix classes do not support these What can we do in Mx with slicing and masking A zeros 256 256 A 10 40 1 A 25 50 60 50 random 50 50 A A 0 75 or A 0 25 0 5 A 100 199 100 199 random 100 100 A 0 100 0 100 A 0 100 100 100 An example of masking paint selected entries A load mri anat sdt short 256 256 B load mri func fdt float 256 256 A flip A B flip B paint A colormap 4 opaint B B 0 7 0 0 0 7 1 0 The features of our matrix class Arithmetic operations Sharing data between matrices Matrix slicing and masking Inversion and solving linear equations Comparing matrices Painting and plotting Transpose flipping and mirroring And more The type system Testing Plan 3 Stages Unit Testing Creation of our own library using Matlab as guidance Library contains its own unit testing program Regressive Testing Creation of a script to automate regressive testing written in tcl Takes a database of one or more mx programs See example Example of the Testing Database samples tdb a sample of testing database for the Mx assign 1 2 3 4 a 1 2 3 4 return a transpose 1 3 2 4 a 1 2 3 4 return a transpose transpose 1 2 3 4 a 1 2 3 4 return a triple transposes 1 2 4 return 1 2 4 matrix add 1 2 3 4 return 1 1 1 1 0 1 2 3 Testing Plan Advanced Testing Necessity for larger testing programs Integrated all the examples from the tutorial and used them as our advanced testing examples Lessons Learned 1 Fully investigate the feasibility of the supporting tools Original Matrix classes lacked many functions Plotting painting masking etc 2 Get advice from experienced 3 When an easier method of implementing classes of function exists use it
View Full Document
Unlocking...