📄 doxygen_matrix.dox
字号:
result = X.Concatonate( Y^3 );
result = X.Plot( 0, 1, 2, "testplot3.bmp", "Y=X^2", "X (m)", "Y (m)", "Y=X^2", "(m^2)", "Y=X^3", "(m^3)" );
\endcode
<img src = "files/testplot3.bmp">
Plotting multiple series.
\code
X = "[ 1; 2; 3; 4; 5; 6; 7; 8; 9; 10; ]"; // set the matrix from a string, column vector.
Matrix Y1 = X^(0.5);
Matrix Y2 = X;
Matrix Y3 = X^2;
Matrix Y4 = X^3;
result = Plot( "testplot4.bmp", "Y as function of X", "X (m)", "Y (m)", X, Y1, "Y=sqrt(X)", "sqrt(m)", X, Y2, "Y=(X)", "(m)", X, Y3, "Y=X^2", "(m^2)", X, Y4, "Y=X^3", "(m^3)" );
\endcode
<img src = "files/testplot4.bmp">
\htmlonly
<br><br><hr>
\endhtmlonly
\section license_sec LICENSE INFORMATION
Copyright (c) 2008, Glenn D. MacGougan, Zenautics Technologies Inc. \n
This license is categorized as a BSD-style license (refer http://en.wikipedia.org/wiki/Bsd_license). \n
Redistribution pertains to the following files and their contents. \n
- Matrix.h\n
- Matrix.cpp\n
- cmatrix.c\n
- cmatrix.h\n
- cplot.h\n
- cplot.c\n
- example_main.cpp\n
Redistribution and use in source and binary forms, with or without
modification, of the specified files is permitted provided the following
conditions are met: \n
- Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer. \n
- Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution. \n
- The name(s) of the contributor(s) may not be used to endorse or promote
products derived from this software without specific prior written
permission. \n
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.
\htmlonly
<br><br><hr>
\endhtmlonly
\section notes_sec 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 glenn at zenautics.com.\n
\htmlonly
<br><br><hr>
\endhtmlonly
\section Version Release Notes
Version 0.01 Beta \n
- This is the first release via sourceforge. The project was privately hosted prior to this version. \n
Version 0.02 Beta \n
- Some inner loop optimizations within for loops. \n
- A few new functions: \n
Matrix Negate(); \n
Matrix IdentityMinusMe(); \n
Matrix MinusIdentity(); \n
Matrix AddIdentity(); \n
Version 0.03 Beta \n
- Matrix Inversion tweaks for more efficiency.
- Complex Matrix Inversion - revised so that robust inversion is always used for complex matrix inversion.
- New Functions \n
bool Matrix::Inplace_rand - generate pseudorandom numbers with uniform distribution [0,1] \n
bool Matrix::Inplace_randn - generate pseudorandom numbers with standard normal distibution N(0,1) \n
bool Matrix::Hilbert - sets the matrix as the NxN hilbert matrix. H_ij = 1.0 / (i+j-1.0) for i=1:N, j=1:N. \n
Version 0.04 Beta \n
- 'explicit' keyword added to vector sytle constructor (needed for some compilers).
- New Functions \n
bool Matrix::Swap - Swap the contents of two matrices without copying \n
Version 0.05 Beta \n
- The FFT function was only computing the FFT of the first column. Fixed to compute
the FFT of each column.
- Efficient functions for multiplication with a matrix transpose added.
- New Functions \n
FFT2 \n
IFFT2 \n
bool Inplace_TranposePreMultiply( const Matrix &B ); // A = transpose(B)*A \n
bool Inplace_PostMultiplyTranspose( const Matrix &B ); // A = A*transpose(B) \n
bool TransposeMultiply( const Matrix &B, const Matrix &C ); // A = transpose(B)*C \n
bool MultiplyTranspose( const Matrix &B, const Matrix &C ); // A = B*transpose(B) \n
Version 0.06 Beta \n
- Bug Fix: Determinant sign error (in a few select cases the determinant had the wrong sign). \n
- Bug Fix: SortByColumn and related functions (only the first and second column were sorted correctly).
- Enhanced the Concatonate() function to allow concatonation of an empty matrix.
- Efficient functions for multiplication with a matrix transpose added.
- New Functions \n
ExtractSubMatrix \n
Inplace_erf \n
Inplace_erfc \n
Inplace_erfinv \n
Inplace_erfcinv \n
GetLDLt \n
GetUDUt \n
Find_EqualTo \n
Find_NotEqualTo \n
Find_LessThan \n
Find_MoreThan \n
\htmlonly
<br><br><hr><br><br>
\endhtmlonly
\section fft_sec FFT
The Professional Version utilizes Intel's FFT (fastest FFT available). For performance comparison of
the various FFT methods refer to http://www.fftw.org/benchfft/.
The Basic Version utilizes the KISS FFT software libary (http://sourceforge.net/projects/kissfft/, also BSD license).
\subsection kiss_fft_sec 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:
- Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
- Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
- Neither the author nor the names of any contributors may be used to endorse or promote products derived from this software without specific prior written permission.
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.
\htmlonly
<br><br><hr><br><br>
\endhtmlonly
\section msvc_sec Getting Started using Microsoft Visual C++ 2008 (Express Edition) (MSVC 9)
\htmlonly
Start Microsoft Visual C++ 2008. <br/><br/>
<img src = "files/msvc2008.png"><br/><br/>
Select File->New->Project.<br/><br/>
<img src = "files/msvc2008_step1.png"><br/><br/>
Select Win32->Win32 Console Application->Choose your project name and path.<br/><br/>
<img src = "files/msvc2008_step2.png"><br/><br/>
Select Next.<br/><br/>
<img src = "files/msvc2008_step3.png"><br/><br/>
Select Empty Project. Precompiled headers are not needed. Select Finish. <br/><br/>
<img src = "files/msvc2008_step4.png"><br/><br/>
Your project will look something like this.<br/><br/>
<img src = "files/msvc2008_step5.png"><br/><br/>
Select Source Files->Add->Existing Item...<br/><br/>
<img src = "files/msvc2008_step6.png"><br/><br/>
Select the files needed for the project. <br/><br/>
<img src = "files/msvc2008_step7.png"><br/><br/>
Try building the solution.<br/><br/>
<img src = "files/msvc2008_step8.png"><br/><br/>
You should see output like this.<br/><br/>
<img src = "files/msvc2008_step9.png"><br/><br/>
Try running the application in debug mode (Press F5).<br/><br/>
<img src = "files/msvc2008_step10.png"><br/><br/>
<img src = "files/msvc2008_step11.png"><br/><br/>
\endhtmlonly
*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -