lpf.h

来自「这个我写的一个计算LC滤波器的程序」· C头文件 代码 · 共 104 行

H
104
字号
// LPF.h: interface for the CLPF class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_LPF_H__CB895781_B2FE_11D4_A754_C81FBF9FE861__INCLUDED_)
#define AFX_LPF_H__CB895781_B2FE_11D4_A754_C81FBF9FE861__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#include "Compnent.h"

class CLPF  
{
protected:
    double RL;
	double PassFreq,EffectFreq;
	double PassVal,EffectVal;//As Am
	CCCompnent *pCCompnent;
	CLCompnent *pLCompnent;
	int SectionNum;
public:
	CLPF();
	CLPF(double Rl,double Pf,double Ef,double PVal,double EVal);
	virtual ~CLPF();
/////////////
	double GetRL() { return RL; } //阻抗
	void SetRL(double rl); //设置 阻抗
    void SetFrequence(double PassF,double EffectF); //设置 频率
	void SetSectionNum(int sectionnum); //设置 节数N
	int  GetSectionNum(void);//得到 节数N
    void GetFrequence(double &PassF,double &EffectF) {  PassF=PassFreq; EffectF=EffectFreq;}
    void SetNeed(double rl,double Pf,double Ef,double PVal,double EVal);
    void GetNeed(double &rl,double &Pf,double &Ef,double &PVal,double &EVal);
    double GetAmpOut(double freq);
	double GetPhaseOut(double freq);
//virtual function
    virtual void SetVal(CCCompnent *pCCompnentIn,CLCompnent *pLCompnentIn)=0;
    virtual void GetVal(CCCompnent *pCCompnentOut,CLCompnent *pLCompnentOut)=0;
	virtual void CountValue()=0;
    virtual void GetOut(CComplex_num &UL,CComplex_num &IL,double freq)=0;
//Cauer virtual function
	virtual void SetReflex(int reflex) {};
	virtual int  GetReflex(void) {return 0;};
	virtual void GetResonance(double *ResonanceDot,int &DotNum) {};
	virtual double CountOs(void) {return 0;}; //计算两点比值
	virtual void GetDataFromTable(void) {};//查表得到归一化值
};

class CButterLPF:public CLPF//最平响应
{
public:
	static double ButterData[7][7];
public:
	CButterLPF();
	CButterLPF(int sectionnum);
	~CButterLPF();
    void SetVal(CCCompnent *pCCompnentIn,CLCompnent *pLCompnentIn);
    void GetVal(CCCompnent *pCCompnentOut,CLCompnent *pLCompnentOut);
	void JudgeNeedNum(void);//利用已知条件得到 节数N
	void CountValue();  //根据节数,查表得出元件
    void GetOut(CComplex_num &UL,CComplex_num &IL,double freq); //不同频率下的复数值大小
};

class CChebyLPF:public CLPF//切比雪夫响应
{
public:
	static double ChebyData[7][7];
public:
	CChebyLPF();
	CChebyLPF(int sectionnum);
	~CChebyLPF();
	void JudgeNeedNum(void);//利用已知条件得到 节数N
	void CountValue();  //根据节数,查表得出元件
    void SetVal(CCCompnent *pCCompnentIn,CLCompnent *pLCompnentIn);
    void GetVal(CCCompnent *pCCompnentOut,CLCompnent *pLCompnentOut);
    void GetOut(CComplex_num &UL,CComplex_num &IL,double freq); //不同频率下的复数值大小
};

class CCauerLPF:public CLPF//椭圆函数响应
{
protected:
	int Reflex;//= 5 10 15 20 50 反射系数
public:
	CCauerLPF();
	CCauerLPF(int sectionnum);
	CCauerLPF(int sectionnum,int reflex);
	~CCauerLPF();
	void JudgeNeedNum(void);//利用已知条件得到 节数N
    void SetVal(CCCompnent *pCCompnentIn,CLCompnent *pLCompnentIn);
    void GetVal(CCCompnent *pCCompnentOut,CLCompnent *pLCompnentOut);
	void CountValue(void);  //根据节数,查表得出元件
 	void GetOut(CComplex_num &UL,CComplex_num &IL,double freq); //不同频率下的复数值大小
//add function
	void SetReflex(int reflex) {Reflex=reflex;}//设置反射系数
	int  GetReflex(void)   {return Reflex;}    //获得反射系数
	void GetResonance(double *ResonanceDot,int &DotNum);//得到谐振点的频率
	double CountOs(void); //计算两点比值
	void GetDataFromTable(void);//查表得到归一化值
};

#endif // !defined(AFX_LPF_H__CB895781_B2FE_11D4_A754_C81FBF9FE861__INCLUDED_)

⌨️ 快捷键说明

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