The Zenautics Matrix Project


Zenautics Technologies Inc.


Download Page

Version

1.11

Introduction

This C++ Matrix/Vector Library provides an extremely powerful software development tool for real and complex data manipulation. It is an easy to use, fast, and efficient one or two dimensional C++ Matrix class designed for engineers and scientists. A great deal of effort in design provides elegant access to the Matrix for real data and for complex data or both. The Matrix is highly optimized for column-wise operations with real-only, complex, and mixed data. Since the double type is the most commonly used floating point type for demanding PC applications, this library is optimized and specific for type 'double'.

Features

FFT/IFFT (DFT/IDFT)* using Intel FFT for the Advanced Edition and Kiss FFT for the Basic Edition (http://sourceforge.net/projects/kissfft/).
Advanced Edition Only**

Data Access

The Matrix treated as a real-only vector:
Matrix A(10); // Create a vector (10x1).
...
double d = A[0];  // Zero based indexing of the matrix as a real-only vector.
A[1] = d*4.0;     // Set a real value in the vector.

A.PrintStdout(4); // Print A to the standard output with a precision of 4.

The Matrix treated as a real-only matrix:

Matrix A(2,2); // Create a matrix (2x2).
...
double d = A[0][0];  // Zero based indexing of the matrix as a real-only matrix.
A[0][1] = d*4.0;

The Matrix can be treated as a complex vector:

Matrix A(10); // Create a vector (10x1).
...
double d = A(0).real();  // Zero based indexing of the matrix as a complex vector.
double v = A(0).imag();
A(1) = d; // set a real value
std::complex<double> q(1.0,-2.0);
A(2) = q; // set a complex value 

or as a complex matrix:

Matrix A(2,2); // Create a matrix (2x2).
...
std::complex<double> c = B(0,0); 
double r = A(0,1).real(); 
double i = A(0,1).imag();
std::complex<double> w(1.0,-2.0);
A(1,1) = w;




Editions

Basic Edition

The Basic Edition is released with almost all the functionality of the Advanced Edition. It is freely available for download from http://www.zenautics.com website with the license information indicated below. This version is intended for evaluating the Matrix Library or those that need the functionality of the Matrix but cannot afford to pay for the commerical version.

Advanced Edition

The Advanced Edition is intended for use in commercial software projects by professionals. It is available for purchase with various support agreement levels. Please contact sales@zenautics.com for more information. The Advanced Edition is substanitally faster than the Basic Edition. It uses advanced SIMD instruction sets and is substantially faster (typically 10 and up to 25 times (e.g. FFT) speed improvement).
The Advanced Edition also facilitates lossless data compression for storing matrix files using a proprietary format. Loading and saving matrices is faster and disk space usage is drastically reduced for large matrix files.

The class interface is the same for both the Advanced and Basic Editions.

Embedded Edition

Contact info@zenautics.com to inquire about customized embedded versions of the Matirx Library (double, float, and integer versions available).




BASIC EDITION LICENSE INFORMATION

Copyright (c) 2007, Glenn D. MacGougan, Zenautics Technologies Inc.

This license is categorized as a BSD-style license (refer http://en.wikipedia.org/wiki/Bsd_license).

Redistribution pertains only to the following files and their contents.

Redistribution and use in source and binary forms, with or without modification, of the specified files is permitted provided the following conditions are met:

THIS SOFTWARE IS PROVIDED BY THE CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.




Notes

This code was developed using rigourous unit testing for every function and operation. Despite any rigorous development process, bugs are inevitable. Please report bugs and suggested fixes to support@zenautics.com.




Coming Attractions




Release Notes

version 1.00

version 1.01

version 1.02

version 1.03

version 1.04

version 1.10

version 1.11






FFT

The Advanced Edition utilizes Intel FFT. There are no license restrictions. For performance comparison of the various FFT methods refer to http://www.fftw.org/benchfft/.

The Basic Edition utilizes the KISS FFT software libary (http://sourceforge.net/projects/kissfft/) which has the following license information. Since the KISS FFT library is redistributed in binary form, the copyright notice below is required in this documentation.

Kiss FFT License Information

Copyright (c) 2003-2004, Mark Borgerding

All rights reserved.

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.







Getting Started with Microsoft Visual C++ verison 8 (VC8)

For VC8:



Follow these steps:

- Create a VC8 project







Download these files and put them in your project folder

Matrix.h Matrix.cpp cmatrix.h matrix_example.cpp cmatrix_basic.lib



Add the .h and .cpp files to your project.





Open the project properties.



Add the library file, cmatrix_basic.lib to the project. Specify the "Ignore Specific Library" as "libmct.lib" since your are running in Debug mode.



Build the solution.



It should look something like this.



Try stepping over each line of code as it runs like this.








Generated on Fri Dec 21 08:40:43 2007 for Matrix by  doxygen 1.5.4