数字滤波器原理及设计 第2页

数字滤波器原理及设计 第2页

#include "stdafx.h"
#include "DigitalFilter.h"


//////////////////////////////////////////////////////////////////////////
//    Cfloat_seq
//////////////////////////////////////////////////////////////////////////

Cfloat_seq::Cfloat_seq()
{
 m_fValues   = NULL;
 m_nValueNum = 0;
}

Cfloat_seq::~Cfloat_seq()
{
 ClearValues();
}

void Cfloat_seq::ClearValues( bool bFreeMem )
{
 if( bFreeMem )
 {
  m_nValueNum = 0;

  if( m_fValues )
   delete[] m_fValues;
  
  m_fValues = NULL;
 }
 else if( ( m_fValues ) && ( m_nValueNum > 0 ) )
  memset( m_fValues, 0, sizeof( float ) * m_nValueNum );
}

bool Cfloat_seq::SetValue( int idx, float Value, bool bErrMsg )
{
 if( ( !m_fValues ) || ( m_nValueNum < 1 ) || ( idx < 0 ) || ( idx >= m_nValueNum ) )
 {
  if( bErrMsg )
   MessageBox( NULL, "InValid Data", "SetValue", MB_OK | MB_ICONEXCLAMATION );

  return false;
 }

 m_fValues[ idx ] = Value;
 return true;
}

bool Cfloat_seq::GetValue( int idx, float &Value, bool bErrMsg )
{
 Value = 0;

 if( ( !m_fValues ) || ( m_nValueNum < 1 ) || ( idx < 0 ) || ( idx >= m_nValueNum ) )
 {
  if( bErrMsg )
   MessageBox( NULL, "InValid Data", "GetValue", MB_OK | MB_ICONEXCLAMATION );

  return false;
 }

 Value = m_fValues[ idx ];
 return true;
}

void Cfloat_seq::AddValue( const float *ValueArray, int Num )
{
 if( ( !ValueArray ) || ( Num < 1 ) )
  return;

 int newNum = Num;
 if( ( m_fValues ) && ( m_nValueNum > 0 ) )
  newNum += m_nValueNum;

 if( newNum < 1 )
  ClearValues( true );
 else
 {
  float *newBuff = new float[ newNum ];

  int idx = 0;

  if( ( m_fValues ) && ( m_nValueNum > 0 ) )
  {
   memcpy( newBuff, m_fValues, sizeof( float ) * m_nValueNum );
   idx += m_nValueNum;
  }

  memcpy( &newBuff[ idx ], ValueArray, sizeof( float ) * Num );
  m_nValueNum = newNum;
 }
}

const float* Cfloat_seq::GetValueArray()
{
 return m_fValues;
}

int Cfloat_seq::GetValueNum()
{
 return m_nValueNum;
}

Cfloat_seq Cfloat_seq::operator+( Cfloat_seq &Value )
{
 Cfloat_seq Result;

 Result.ClearValues( true );
 Result.AddValue( this->GetValueArray(), this->GetValueNum() );
 Result.AddValue( Value.GetValueArray(), Value.GetValueNum() );

 return Result;
}


//////////////////////////////////////////////////////////////////////////
//    CFIR
//////////////////////////////////////////////////////////////////////////

CFIR::CFIR()
{
 Cfloat_seq::Cfloat_seq();
}

CFIR::~CFIR()
{
 Cfloat_seq::~Cfloat_seq();
}

上一页  [1] [2] [3] [4] 下一页

Copyright © 2007-2012 www.chuibin.com 六维论文网 版权所有