📄 filter_struct.cpp
字号:
// Filter_Struct.cpp: implementation of the CFilter_Struct class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "Fileter.h"
#include "Filter_Struct.h"
#include "math.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
const double PI=3.1415926;
CFilter_Struct::CFilter_Struct()
{
C1=C2=C3=C4=C5=0;
L2=R2=L4=R4=0;
RL=0;
}
CFilter_Struct::~CFilter_Struct()
{
}
CFilter_Struct::CFilter_Struct(double c1,double c2,double c3,
double l2,double r2,double rl)
{
C1=c1/(1e12);
C2=c2/(1e12);
C3=c3/(1e12);
L2=l2/(1e6);
R2=r2;
RL=rl;
C4=C5=L4=R4=0;
}
CFilter_Struct::CFilter_Struct(double c1,double c2,double c3,double c4,double c5,
double l2,double r2,double l4,double r4,double rl)
{
C1=c1/(1e12);
C2=c2/(1e12);
C3=c3/(1e12);
C4=c4/(1e12);
C5=c5/(1e12);
L2=l2/(1e6);
R2=r2;
L4=l4/(1e6);
R4=r4;
RL=rl;
}
void CFilter_Struct::SetVal(double c1,double c2,double c3,double c4,double c5,
double l2,double r2,double l4,double r4,double rl)
{
C1=c1/(1e12);
C2=c2/(1e12);
C3=c3/(1e12);
C4=c4/(1e12);
C5=c5/(1e12);
L2=l2/(1e6);
R2=r2;
L4=l4/(1e6);
R4=r4;
RL=rl;
}
void CFilter_Struct::GetVal(double &c1,double &c2,double &c3,double &c4,double &c5,
double &l2,double &r2,double &l4,double &r4,double &rl)
{
c1=C1*(1e12);
c2=C2*(1e12);
c3=C3*(1e12);
c4=C4*(1e12);
c5=C5*(1e12);
l2=L2*(1e6);
r2=R2;
l4=L4*(1e6);
r4=R4;
rl=RL;
}
double CFilter_Struct::GetOut2(CComplex_num Is, double f)
{
double Omg=2*PI*f;
C2=1000/(1e12);
L2=2.817/(1e6);
R2=2;
RL=50;
CComplex_num CC2(0,-1/(Omg*C2));
CComplex_num LC2(0,Omg*L2);
CComplex_num RC2(R2,0);
CComplex_num RLC(RL,0);
CComplex_num V1,V2,IL,UL;
V2=LC2+RC2;
V1=CC2%V2;
UL=(RLC/(V1+RLC)) * Is;
return (UL.GetAmp());
}
double CFilter_Struct::GetOut3(CComplex_num Is, double f)
{
double Omg=2*PI*f;
CComplex_num CC1(0,-1/(Omg*C1));
CComplex_num CC2(0,-1/(Omg*C2));
CComplex_num CC3(0,-1/(Omg*C3));
CComplex_num LC2(0,Omg*L2);
CComplex_num RC2(R2,0);
CComplex_num RLC(RL,0);
CComplex_num V1,I2,IL,UL;
V1=(CC2%(LC2+RC2))+(CC3%RLC);
I2=(CC1/(CC1+V1)) * Is;
IL=(CC3/(CC3+RLC)) * I2;
UL=RLC * IL;
return (IL.GetAmp());
}
double CFilter_Struct::GetOut5(CComplex_num Is, double f)
{
if (f==0) f=1e-10;
double Omg=2*PI*f;
CComplex_num CC1(0,-1/(Omg*C1));
CComplex_num CC2(0,-1/(Omg*C2));
CComplex_num CC3(0,-1/(Omg*C3));
CComplex_num CC4(0,-1/(Omg*C4));
CComplex_num CC5(0,-1/(Omg*C5));
CComplex_num LC2(0,Omg*L2);
CComplex_num RC2(R2,0);
CComplex_num LC4(0,Omg*L4);
CComplex_num RC4(R4,0);
CComplex_num RLC(RL,0);
CComplex_num V1,V2,I2,I4,IL,U4,UL,PL;
V1=(CC4%(LC4+RC4))+(CC5%RLC);
V2=(CC2%(LC2+RC2))+(CC3%V1);
I2=( CC1/(CC1+V2) ) ;//* Is;
I4=( CC3/(CC3+V1) ) * I2;
IL=( CC5/(CC5+RLC)) * I4;
U4=(V1%CC3)/V2;//*Us;
UL=(RLC%CC5)/V1*U4;
PL=UL * IL;
double Amp=PL.GetAmp();
double dB=10*log10(Amp);
return (dB);
}
double CFilter_Struct::GetF_L2C2()
{
return (1/(2*PI*sqrt(L2*C2)));
}
double CFilter_Struct::GetF_L4C4()
{
return (1/(2*PI*sqrt(L4*C4)));
}
double CFilter_Struct::GetF_L2C3()
{
return (1/(2*PI*sqrt(L2*C3)));
}
double CFilter_Struct::GetF_L4C5()
{
return (1/(2*PI*sqrt(L2*C5)));
}
/* CComplex_num num1(3,4);
CComplex_num num2(6,2);
CComplex_num num3,num4,num5,num6,num7;
num3=num1+num2;
num4=num1-num2;
num5=num1*num2;
num6=num1/num2;
num7=num1%num2;
CString str1,str2,str3,str4,str5,str6,str7;
str1.Format("%10.2f + j %10.2f",num1.real_part,num1.virt_part);
str2.Format("%10.2f + j %10.2f",num2.real_part,num2.virt_part);
str3.Format("%10.2f + j %10.2f",num3.real_part,num3.virt_part);
str4.Format("%10.2f + j %10.2f",num4.real_part,num4.virt_part);
str5.Format("%10.2f + j %10.2f",num5.real_part,num5.virt_part);
str6.Format("%10.2f + j %10.2f",num6.real_part,num6.virt_part);
str7.Format("%10.2f + j %10.2f",num7.real_part,num7.virt_part);
pDC->TextOut(100,100,str1);
pDC->TextOut(100,130,str2);
pDC->TextOut(100,160,str3);
pDC->TextOut(100,190,str4);
pDC->TextOut(100,210,str5);
pDC->TextOut(100,240,str6);
pDC->TextOut(100,270,str7);
*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -