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

📄 lpf.h

📁 这个我写的一个计算LC滤波器的程序
💻 H
字号:
// 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 + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -