📄 半带滤波器.cpp
字号:
#include<iostream.h>
#include<fstream.h>
#include<stdio.h>
#include<math.h>
const double pi=3.14159265358;
int i,w;
float x[500]={0},h[50]={0},y[1000]={0};
void conv(float h[],int a,float x[],int b)//时域离散信号卷积;
{
int m=0,n=0;
for(int j=0;j<a;j++)
for(m=0,n=j;m<=j&&n>=0;m++,n--)
y[j]+=h[m]*x[n];
for(j=a;j<(a+b);j++)
for(m=j-a+1,n=a-1;m<a&&n>(j-a);m++,n--)
y[j]+=h[m]*x[n];
}
void main()
{
float f1=100; //低频信号
float f2=2200; //高频信号
float Fs=8000; //采样频率
cout<<"自动采样键入1,手动采样键入2"<<endl;
cin>>w;
switch(w) //选择采样方式
{
case 1:
for(i=0;i<1000;i++)
{
x[i]=sin(2*pi*f1/Fs*i)+sin(2*pi*f2/Fs*i); //已调信号
}
break;
case 2:
fstream File1("手动给定采样点数据.txt",ios::out|ios::in);//读取当前目录下“手动给定采样点数据.txt”文件中的数据
float temp;
char str[20];
i=0;
while((!File1.eof())&&i<20)
{
File1>>str;
temp=atof(str);
x[i]=temp;
i++;
}
File1.close();
break;
}
ofstream sample("输入采样点.txt"); //保存采样点数据到前目录下“输入采样点.txt”文件中;
for(i=0;i<500;i++)
{
sample<<"s["<<i<<"]="<<x[i]<<endl;
}
fstream File2("半带滤波器系数.txt",ios::out|ios::in);//读取当前目录下“半带滤波器系数.txt”文件中的数据
float temp;
char str[20];
i=0;
while((!File2.eof())&&i<20)
{
File2>>str;
temp=atof(str);
h[i]=temp;
i++;
}
File2.close();
conv(h,20,x,20); //时域离散信号卷积计算;
for(i=0;i<40;i=i+2) //二倍抽取
y[i]=0;
ofstream output("半带滤波器输出.txt"); //保存滤波器冲击函数序列到当前目录下的“半带滤波器输出.txt”文件中;
for(i=0;i<39;i++)
{
cout<<"y["<<i<<"]="<<y[i]<<endl;
output<<"y["<<i<<"]="<<y[i]<<endl;
}
output.close();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -