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

📄 半带滤波器.cpp

📁 半带滤波器仿真,包括一个.cpp文件和一个.m仿真文件
💻 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 + -