关于数字滤波解调信号

对于上一篇博客中所设计的数字滤波器,设计的目的就是产生滤波器序列和h(n),然后,当输入信号序列为x(n)的时候,输出序列为y(n),实现如下图所示时域处理功能
在这里插入图片描述

那么,要实现上面的功能,时域上其实是x(n)和h(n)的线性卷积方法,通过c语言使用双重for循环实现线性卷积方法

//lb2.c
//离散序列线性卷积
#include <stdio.h> 
float convolute(double *f,double *g,unsigned int k)
{
	unsigned int n=0;
	float sum=0;
	
	for(n=0;n!=k;n++)
	{
		sum+=f[n]*g[k-n];
	}
	return sum;
}
void main()
{   int i,k;
	double f[256]={0};
	
	double g[257]={0};
	
FILE *fp=fopen("am.dat","r");
for(i=0;i<256;i++)
{
  fscanf(fp,"%lf",&f[i]);
 
}
printf("%lf\n",f[0]);
fclose(fp);



	
FILE *fp1=fopen("lbq1.dat","r");
for(i=0;i<256;i++)
{
  fscanf(fp1,"%lf",&g[i]);
 
}
printf("%lf\n",g[0]);
fclose(fp1);



	
	
	
	
	float convo=0;
	
	FILE *fp3=fopen("lb2.dat","w");
	
	for(k=0;k<256;k++)
	{
	convo=convolute(f,g,k);
	fprintf(fp3,"%lf\n",convo);
	}

	fclose(fp);
	}

这里假设输入的信号为原始信号序列s=0.5cos(2pi200t),其频率为200hz,设计的低通滤波器序列是允许其通过的,那么使用低通滤波器对该原始信号进行处理,通过gnuplot作图显示原始信号图像为:
在这里插入图片描述
经过低通滤波器之后:
在这里插入图片描述
理论上来说,200hz信号经过所设计的低通滤波器之后,应该和原始的信号图像一致,但是从上图可以看出经过滤波器之后的信号,相位反转了180°,幅值有细微的变化。

使用该滤波器和滤波方法解调AM调制信号,解调AM信号使用的是相干解调法,当然还可以使用包络检波,相干解调的原理框图如下所示;在这里插入图片描述
对于接受来的信号,需要乘一个与发射端同频同相的载波信号,然后再让信号通过低通滤波器滤除高频载波成分;
原始信号:
在这里插入图片描述
原始调制信号图像为:
在这里插入图片描述
接收端加入同步载波后
在这里插入图片描述
使用低通滤波器对其滤波处理后:
在这里插入图片描述
在接收端对原始信号进行滤波处理后,发现恢复出来的信号和原始信号相比有相位偏移,相位想法的现象,当然幅值跟随相位出现相反现象。因为我设计的滤波器是fir滤波器,且设计出来的滤波器有明显的吉布斯效应,低通滤波器设计的不够严谨。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值