⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 matrix.cpp

📁 模糊聚類分析源碼。包含教學文件
💻 CPP
字号:
/*    Context       : Matrix and Vector Operation  Author        : Frank Hoeppner, see also AUTHORS file   Description   : implementation of class module Matrix                    History       :    matvec.nw     980630 fh: first noweb version of generic_matrix     980925 fh: inserted constructors with 1/2/3 field parameters from statmatrix     981007 fh: reorganization of refinements    matvec.matrix.nw:     980831 fh: first statmatrix implementation     980925 fh: moved constructors with 1/2/3 field parameters to matrix.nw     990107 fh: refinements reorganization    matvec.init-diag.nw:     990107 fh: moved constructors from matvec.diagmat.nw  Comment       :     This file was generated automatically. DO NOT EDIT.  Copyright     : Copyright (C) 1999-2000 Frank Hoeppner    This program is free software; you can redistribute it and/or modify    it under the terms of the GNU General Public License as published by    the Free Software Foundation; either version 2 of the License, or    (at your option) any later version.    This program is distributed in the hope that it will be useful,    but WITHOUT ANY WARRANTY; without even the implied warranty of    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the    GNU General Public License for more details.    You should have received a copy of the GNU General Public License    along with this program; if not, write to the Free Software    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA*/#ifndef Matrix_SOURCE#define Matrix_SOURCE/* configuration include */#ifdef HAVE_CONFIG_H/*//FILETREE_IFDEF HAVE_CONFIG_H*/#include "config.h"/*//FILETREE_ENDIF*/#endif// necessary includes#include "Matrix.hpp"// data// implementationtemplate <short ROWS, short COLS, class DATA>Matrix<ROWS,COLS,DATA>::Matrix  (  )    {  memset(&m_field,0,sizeof(DATA)*ROWS*COLS);  }template <short ROWS, short COLS, class DATA>Matrix<ROWS,COLS,DATA>::Matrix  (  const Matrix<ROWS,COLS,DATA>& ar_Copy  )    {    adjust(ar_Copy.rows(),ar_Copy.cols());  memcpy(&m_field,&ar_Copy.m_field,sizeof(DATA)*ROWS*COLS);  }template <short ROWS, short COLS, class DATA>void Matrix<ROWS,COLS,DATA>::operator=  (  const Matrix& ar_Copy  )  {    adjust(ar_Copy.rows(),ar_Copy.cols());  memcpy(&m_field,&ar_Copy.m_field,sizeof(DATA)*ROWS*COLS);  }template <short ROWS, short COLS, class DATA>Matrix<ROWS,COLS,DATA>::~Matrix  (  )  {    }template <short ROWS, short COLS, class DATA>Matrix<ROWS,COLS,DATA>::Matrix  (  const value_type value0  )  {  matrix_set_vector(*this,value0);  }template <short ROWS, short COLS, class DATA>Matrix<ROWS,COLS,DATA>::Matrix  (  const value_type value0,  const value_type value1  )  {  matrix_set_track(*this,value0,value1);  }template <short ROWS, short COLS, class DATA>Matrix<ROWS,COLS,DATA>::Matrix  (  const value_type value0,  const value_type value1,  const value_type value2  )  {  matrix_set_track(*this,value0,value1,value2);  }template <short ROWS, short COLS, class DATA>Matrix<ROWS,COLS,DATA>::Matrix  (  const value_type value0,  const value_type value1,  const value_type value2,  const value_type value3  )  {  matrix_set_track(*this,value0,value1,value2,value3);  }template <short ROWS, short COLS, class DATA>Matrix<ROWS,COLS,DATA>::Matrix  (  const value_type value0,  const value_type value1,  const value_type value2,  const value_type value3,  const value_type value4  )  {  matrix_set_track(*this,value0,value1,value2,value3,value4);  }template <short ROWS, short COLS, class DATA> voidMatrix<ROWS,COLS,DATA>::adjust(int rows,int cols)   {   //#pragma set woff 1209 // SGI remark(1209): controlling expression is constant  if (false)    {    invariant      (      rows*cols <= ROWS*COLS,      "new size does not exceed static dimension",      SOURCELOC      );    value_type *p_new( (value_type*)&m_field );    value_type *p_old( (value_type*)&m_field );    if (p_old!=NULL) // anything to reorder?      {      int cs( min(cols,COLS) );      int rs( min(rows,ROWS) );      if ( COLS > cols )        { // reduce no. of columns        for (int r=1;r<rs;++r)          for (int c=0;c<cs;++c)            p_new[ r*cols+c ] = p_old[ r*COLS+c ];        } else      if ( COLS < cols )        {        for (int r=rs-1;r>0;--r)          for (int c=cs-1;c>0;--c)            p_new[ r*cols+c ] = p_old[ r*COLS+c ];        }      // else same no. of columns, nothing to reorder      }    invariant(false,"this line should never be executed",SOURCELOC);    }  //#pragma reset woff 1209 // SGI remark(1209): controlling expression is constant  }template <short ROWS, short COLS, class DATA>bool Matrix<ROWS,COLS,DATA>::operator<  (  const Matrix& M  )   const  {   return matrix_lexico_less(*this,M);   }template <short ROWS, short COLS, class DATA>bool Matrix<ROWS,COLS,DATA>::operator==  (  const Matrix& M  )   const  {   return matrix_numeric_equal(*this,M);   }template <short ROWS, short COLS, class DATA>voidMatrix<ROWS,COLS,DATA>::write  (  ostream& os  )  const   {  write_matrix(os,*this);  }template <short ROWS, short COLS, class DATA>voidMatrix<ROWS,COLS,DATA>::read  (  istream& is  )  {  read_matrix(is,*this);  }// template instantiation#endif // Matrix_SOURCE

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -