📄 matrix_8h.html
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"><title>Zhang: matrix.h File Reference</title><link href="doxygen.css" rel="stylesheet" type="text/css"><link href="tabs.css" rel="stylesheet" type="text/css"></head><body><!-- Generated by Doxygen 1.4.7 --><div class="tabs"> <ul> <li><a href="index.html"><span>Main Page</span></a></li> <li id="current"><a href="files.html"><span>Files</span></a></li> </ul></div><div class="tabs"> <ul> <li><a href="files.html"><span>File List</span></a></li> <li><a href="globals.html"><span>Globals</span></a></li> </ul></div><h1>matrix.h File Reference</h1>Simple Math. <a href="#_details">More...</a><p><table border="0" cellpadding="0" cellspacing="0"><tr><td></td></tr><tr><td colspan="2"><br><h2>Functions</h2></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="matrix_8h.html#31c70df0e70064a312595daa73c92e55">mtxGaussAxb</a> (double *a, int n, double *b)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">Computes the solution for the linear equations [a]{x}={b} using Gauss method. <a href="#31c70df0e70064a312595daa73c92e55"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="matrix_8h.html#042f70fbbf118a02f26e03857c885b73">mtxDecompLU</a> (double *a, int n, int *rp, double *d, double *scale)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">Computes the LU decomposition of a matrix [a]nxn, [A]=[L][U]. <a href="#042f70fbbf118a02f26e03857c885b73"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="matrix_8h.html#ab45e8ff9c3ff83494066ca68f5a1f24">mtxBackSubLU</a> (double *a, int n, int *rp, double *b)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">Solves the set of n linear equations [A]{x} = {b} where the matrix for this function is de LU decompostion determined by the function mtxDecompLU. <a href="#ab45e8ff9c3ff83494066ca68f5a1f24"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">double </td><td class="memItemRight" valign="bottom"><a class="el" href="matrix_8h.html#d8611e36e078faf66d3abc15f906875a">mtxDetLU</a> (double *a, double d, int n)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">Computes the determinant of a matrix [A] where the matrix for this function is de LU decompostion determined by the function mtxDecompLU. <a href="#d8611e36e078faf66d3abc15f906875a"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="matrix_8h.html#285bab339f6d0d7eb835a49a5a028586">mtxSVD</a> (double *a, int m, int n, double *u, double *d, double *v, double *tmp)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">Computes the Singlar Value Decomposition of a matrix [a], i.e. <a href="#285bab339f6d0d7eb835a49a5a028586"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">double </td><td class="memItemRight" valign="bottom"><a class="el" href="matrix_8h.html#dbd2bc7ac7f5208dca02c384d83439c5">mtxSVDAx0</a> (double *a, int m, int n, double *x, double *u, double *d, double *v, double *tmp)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">Finds a non trivial solution for the system Ax=0. <a href="#dbd2bc7ac7f5208dca02c384d83439c5"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="matrix_8h.html#f0ec426dc6b1a3e8182d9fb059eddff0">mtxSVDAxb</a> (double *a, int m, int n, double *x, double *b, double *u, double *d, double *v, double *tmp)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">Finds a solution for the system Ax=b, A mxn, m>n. <a href="#f0ec426dc6b1a3e8182d9fb059eddff0"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="matrix_8h.html#a6b1176aa8db74191521cb81e751166d">mtxAddMatVecTensor</a> (double *a, double *v, int n)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">Add the tensor product of the vector {v} (i.e., {v}{v}T) to the matrix [A] -> [A]+={v}{v}T. <a href="#a6b1176aa8db74191521cb81e751166d"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="matrix_8h.html#2e03e137b5a186b6fd44c366c58cfedc">mtxAb</a> (double *a, double *b, int m, int n, double *x)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">computes the matrix product {x}=[A]{b} <a href="#2e03e137b5a186b6fd44c366c58cfedc"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="matrix_8h.html#079a9f06d9f5b8e813bc7ce306f841ac">mtxAtb</a> (double *a, double *b, int m, int n, double *x)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">computes the matrix product {x}=[A]T{b} <a href="#079a9f06d9f5b8e813bc7ce306f841ac"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="matrix_8h.html#ed88ccaed5593a611da13fc2b6758eb1">mtxAB</a> (double *a, double *b, int m, int p, int n, double *x)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">computes the matrix product [X]=[A][B] <a href="#ed88ccaed5593a611da13fc2b6758eb1"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="matrix_8h.html#032912e42cd5cb59a26658fb0390f11b">mtxABt</a> (double *a, double *b, int m, int p, int n, double *x)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">computes the matrix product [X]=[A][B]T <a href="#032912e42cd5cb59a26658fb0390f11b"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="matrix_8h.html#d73b4824e0faa03ecc452155c6b25fc5">mtxAtB</a> (double *a, double *b, int m, int p, int n, double *x)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">computes the matrix product [X]=[A]T[B] <a href="#d73b4824e0faa03ecc452155c6b25fc5"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="matrix_8h.html#51aa9ff7c1ba62dfb1361ae86b473ee7">mtxAddMat</a> (double *a, double *b, int m, int n, double *x)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">computes the sum [A]+[B] <a href="#51aa9ff7c1ba62dfb1361ae86b473ee7"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="matrix_8h.html#4360815d8f76131580aebb9f6e25d8c0">mtxSubMat</a> (double *a, double *b, int m, int n, double *x)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">computes the subtration [A]-[B] <a href="#4360815d8f76131580aebb9f6e25d8c0"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="matrix_8h.html#95c686545b838f7efa25ecdafad22721">mtxScaMat</a> (double *a, double s, int m, int n, double *x)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">multiplies a matrix by a scalar <a href="#95c686545b838f7efa25ecdafad22721"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="matrix_8h.html#2c489a88de254fe312fd68e477de202b">mtxAt</a> (double *a, int m, int n, double *x)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">computes the transpose [X]=[A]T <a href="#2c489a88de254fe312fd68e477de202b"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="matrix_8h.html#4d60622357f1cafe52aed6c07d6647eb">mtxMatCopy</a> (double *a, int m, int n, double *x)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">copy [A] to [X] <a href="#4d60622357f1cafe52aed6c07d6647eb"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="matrix_8h.html#e8386461ea9d0fdae7168e13c2495dc9">mtxAddVec</a> (double *u, double *v, int m, double *x)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">computes the sum {x}={v}+{u} <a href="#e8386461ea9d0fdae7168e13c2495dc9"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="matrix_8h.html#30f8232e5be92b3594c0a567707f3755">mtxSubVec</a> (double *u, double *v, int m, double *x)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">computes the Subtraction {x}={v}-{u} <a href="#30f8232e5be92b3594c0a567707f3755"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="matrix_8h.html#eb1b3b4343ad51238ece28dc9749049b">mtxScaVec</a> (double *u, int m, double s, double *x)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">multiplies a vector by a scalar -> {x}=s{u} Dimensions: {u}=m and {x}=m <a href="#eb1b3b4343ad51238ece28dc9749049b"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">double </td><td class="memItemRight" valign="bottom"><a class="el" href="matrix_8h.html#7a78b2d0d8f00202871acc92908504ba">mtxDotProd</a> (double *u, double *v, int m)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">dot product of vectors -> s={v}. <a href="#7a78b2d0d8f00202871acc92908504ba"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="matrix_8h.html#f0cb9896e90ea23744ce604319272660">mtxProdVec3</a> (double *u, double *v, double *x)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">vectorial product of vectors with dimension 3 -> x={u}x{v} Dimensions: {v}=3 and {u}=3 <a href="#f0cb9896e90ea23744ce604319272660"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">double </td><td class="memItemRight" valign="bottom"><a class="el" href="matrix_8h.html#5fade363d0beeb47054402ef4bc385ae">mtxNormalizeVector</a> (int n, double *v)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">normalize {v} and returns the norm <a href="#5fade363d0beeb47054402ef4bc385ae"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="matrix_8h.html#86cfc17ba8acba8b8de647dfef75fdd4">mtxVecCopy</a> (double *v, int m, double *x)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">copies a vector -> {x}={v} Dimensions: {v}={x}=m <a href="#86cfc17ba8acba8b8de647dfef75fdd4"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="matrix_8h.html#4278ba66b98559e68439fa6fb9822b5d">mtxCol</a> (double *A, int col, int m, int n, double *x)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">gets a column -> {x}=col(A) <a href="#4278ba66b98559e68439fa6fb9822b5d"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="matrix_8h.html#8909c00a4a6078a06f5c867af13fefe2">mtxShowMat</a> (char *title, double *a, int m, int n)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">print in the console the matrix <a href="#8909c00a4a6078a06f5c867af13fefe2"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="matrix_8h.html#a39062910dc9c3402c4970bec88bca27">mtxShowVec</a> (char *title, double *v, int n)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">print in the console the vector <a href="#a39062910dc9c3402c4970bec88bca27"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="matrix_8h.html#3b7159bac71e85023bd37e0fa4a11c44">mtxAxInxn</a> (double *a, int n, double *x)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">Computes the nxn matrix [X] such that [A][X]=[I] , then [X] is the inverse of [A]. <a href="#3b7159bac71e85023bd37e0fa4a11c44"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="matrix_8h.html#edf38ceba66d690303c059e7ef0bad87">mtxAxImxn</a> (double *A, int m, int n, double *X)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">Computes the mxn matrix [X] such that [A][X]=[I] , then [X] is the inverse of [A]. <a href="#edf38ceba66d690303c059e7ef0bad87"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="matrix_8h.html#b9ce8afe0c13cff42f0704621bbd72b5">mtxAxb</a> (double *A, int m, int n, double *b, double *x)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">find solution x to the system Ax=b <a href="#b9ce8afe0c13cff42f0704621bbd72b5"></a><br></td></tr></table><hr><a name="_details"></a><h2>Detailed Description</h2>Simple Math. <p><dl compact><dt><b>Author:</b></dt><dd>Marcelo Gattass<p>Manuel E. L. Fernandez</dd></dl><dl compact><dt><b>Date:</b></dt><dd>Jul06,2006</dd></dl>Vectors are represented in ANSI C as double* Matrices are stored as vectors in a line by line fashion. i.e., the ij element of a matrix Amxn (m rowns and n coluns) is stored in the i*n+j position of the vector that stores the matrix.<p>The ideia is to enable simple matrix creations such as: double a[2*3] = { 1., 2., 7., -1., 5., 4.}; This ANSI C statment declares and stores the 2x3 matrix:<br> | 1. 2. 7. |<br> | -1 5. 4. |<br> <hr><h2>Function Documentation</h2><a class="anchor" name="ed88ccaed5593a611da13fc2b6758eb1"></a><!-- doxytag: member="matrix.h::mtxAB" ref="ed88ccaed5593a611da13fc2b6758eb1" args="(double *a, double *b, int m, int p, int n, double *x)" --><div class="memitem"><div class="memproto"> <table class="memname"> <tr> <td class="memname">void mtxAB </td> <td>(</td> <td class="paramtype">double * </td> <td class="paramname"> <em>a</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">double * </td> <td class="paramname"> <em>b</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int </td> <td class="paramname"> <em>m</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int </td> <td class="paramname"> <em>p</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int </td> <td class="paramname"> <em>n</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">double * </td> <td class="paramname"> <em>x</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td width="100%"></td> </tr> </table></div><div class="memdoc"><p>computes the matrix product [X]=[A][B] <p><dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>a</em> </td><td>matrix [A], [A]=mxp </td></tr> <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>b</em> </td><td>matrix [B], [B]=pxn </td></tr> <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>m</em> </td><td>number of lines of [A] </td></tr> <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>p</em> </td><td>number of columns of [A] and number of lines of [B] </td></tr> <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n</em> </td><td>number of columns of [B] </td></tr> <tr><td valign="top"><tt>[out]</tt> </td><td valign="top"><em>x</em> </td><td>matrix [X]=[A][B], [X]=mxn </td></tr> </table></dl></div></div><p><a class="anchor" name="2e03e137b5a186b6fd44c366c58cfedc"></a><!-- doxytag: member="matrix.h::mtxAb" ref="2e03e137b5a186b6fd44c366c58cfedc" args="(double *a, double *b, int m, int n, double *x)" --><div class="memitem"><div class="memproto"> <table class="memname"> <tr> <td class="memname">void mtxAb </td> <td>(</td> <td class="paramtype">double * </td> <td class="paramname"> <em>a</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">double * </td> <td class="paramname"> <em>b</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int </td> <td class="paramname"> <em>m</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int </td> <td class="paramname"> <em>n</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">double * </td> <td class="paramname"> <em>x</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td width="100%"></td> </tr> </table></div><div class="memdoc"><p>computes the matrix product {x}=[A]{b} <p><dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>a</em> </td><td>matrix [A] </td></tr> <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>b</em> </td><td>vector {b} </td></tr> <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>m</em> </td><td>number of lines of [A] and number of elements of {b} </td></tr> <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>n</em> </td><td>number of columns of [A] </td></tr> <tr><td valign="top"><tt>[out]</tt> </td><td valign="top"><em>x</em> </td><td>vector {x}=[A]{b}, {x}=n </td></tr> </table></dl></div></div><p><a class="anchor" name="032912e42cd5cb59a26658fb0390f11b"></a><!-- doxytag: member="matrix.h::mtxABt" ref="032912e42cd5cb59a26658fb0390f11b" args="(double *a, double *b, int m, int p, int n, double *x)" --><div class="memitem"><div class="memproto"> <table class="memname"> <tr> <td class="memname">void mtxABt </td> <td>(</td> <td class="paramtype">double * </td> <td class="paramname"> <em>a</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">double * </td> <td class="paramname"> <em>b</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int </td> <td class="paramname"> <em>m</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int </td> <td class="paramname"> <em>p</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int </td> <td class="paramname"> <em>n</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">double * </td> <td class="paramname"> <em>x</em></td><td> </td> </tr> <tr> <td></td> <td>)</td>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -