MathEx.h
上传用户:gzboli
上传日期:2013-04-10
资源大小:471k
文件大小:3k
源码类别:

图片显示

开发平台:

Visual C++

  1. // MathEx.h: interface for the CMathEx class.
  2. //
  3. //////////////////////////////////////////////////////////////////////
  4. #if !defined(AFX_MATHEX_H__66636FE6_F3A3_4475_B453_F7C481402750__INCLUDED_)
  5. #define AFX_MATHEX_H__66636FE6_F3A3_4475_B453_F7C481402750__INCLUDED_
  6. #if _MSC_VER > 1000
  7. #pragma once
  8. #endif // _MSC_VER > 1000
  9. #ifndef _YUTAO_INSAR_PAI__
  10. const double PAI = 3.1415926535897932384626433832795;
  11. #endif//_YUTAO_INSAR_PAI__
  12. //define complex struct
  13. #ifndef AFX_INSAR_H__YUTAO_COMPLEX_
  14. #define AFX_INSAR_H__YUTAO_COMPLEX_
  15. /*
  16. class COMPLEX
  17. {
  18. public:
  19. double re;
  20. double im;
  21. public:
  22. COMPLEX();
  23. COMPLEX(double real, double image);
  24. COMPLEX(const COMPLEX &c);
  25. ~COMPLEX();
  26. COMPLEX operator +(const COMPLEX &c);
  27. COMPLEX operator -(const COMPLEX &c);
  28. COMPLEX operator *(const COMPLEX &c);
  29. COMPLEX& operator =(const COMPLEX &c);
  30. BOOL operator ==(const COMPLEX &c);
  31. COMPLEX operator *(double d);
  32. friend COMPLEX operator *(double d, const COMPLEX &c);
  33. // friend COMPLEX operator +(COMPLEX &L, COMPLEX &R);
  34. // friend COMPLEX operator -(COMPLEX &L, COMPLEX &R);
  35. // friend COMPLEX operator *(COMPLEX &L, COMPLEX &R);
  36. // friend BOOL operator ==(COMPLEX L, COMPLEX &R);
  37. };//COMPLEX,*PCOMPLEX;*/
  38. typedef struct sCOMPLEX
  39. {
  40. double re;
  41. double im;
  42. }COMPLEX, *PCOMPLEX;
  43. COMPLEX Add(COMPLEX c1, COMPLEX c2);
  44. COMPLEX Sub(COMPLEX c1, COMPLEX c2);
  45. COMPLEX Mul(COMPLEX c1, COMPLEX c2);
  46. #endif//AFX_INSAR_H__YUTAO_COMPLEX_
  47. class CMathEx  
  48. {
  49. //Properties
  50. public:
  51. //Operations
  52. public:
  53. CMathEx();
  54. virtual ~CMathEx();
  55. static void MatrixRotate(double *after, const double *before, int row, int col);
  56. static void MatrixMutiply(double *result, const double *left, const double *right,
  57. int row, int coll, int colr);
  58. static BOOL MatrixConvert(double *result, const double *before, int size);
  59. static void JieFC(double *xsz, int row, int col, double *result);
  60. //解方程,右侧为零相量,xsz-系数阵,row-行数,col-列数,
  61. static BOOL GSXQ(double *x, double *a, double *b, int size);
  62. //列选主元高斯消去法解方程,x-未知数,a-系数阵方阵,b-常数阵,size-矩阵维数
  63. static BOOL FFT(const COMPLEX *TD, COMPLEX *FD, int power);
  64. //快速傅立叶变换,TD-时域,FD-频域,power-2的幂数
  65. static BOOL IFFT(const COMPLEX *FD, COMPLEX *TD, int power);
  66. //快速傅立叶反变换,TD-时域,FD-频域,power-2的幂数
  67. static void DCT(double *f, double *F, int power);
  68. static void IDCT(double *F, double *f, int power);
  69. static void WALh(double *f, double *W, int power);
  70. static void IWALh(double *W, double *f, int power);
  71. static double GetArea(POINT vert, POINT from, POINT to);
  72. static BOOL MedianFilter(float *pData, int iWidth, int iHeight);
  73. static int compare(const void *arg1, const void *arg2);
  74. };
  75. #endif // !defined(AFX_MATHEX_H__66636FE6_F3A3_4475_B453_F7C481402750__INCLUDED_)