首页 > 其他分享 >基于CMFB余弦调制滤波器组的频谱响应matlab仿真

基于CMFB余弦调制滤波器组的频谱响应matlab仿真

时间:2024-01-21 23:45:59浏览次数:25  
标签:滤波器 余弦 响应 matlab 信号 CMFB 调制

1.算法运行效果图预览

 

 

2.算法运行软件版本

matlab2022a

 

3.算法理论概述

         CMFB余弦调制滤波器组是一种基于余弦调制技术的滤波器组,它具有频率选择性和可调性,可以广泛应用于信号处理、图像处理、通信等领域。下面将详细介绍其原理、数学公式等。

 

3.1、CMFB余弦调制滤波器组原理

        CMFB余弦调制滤波器组的基本原理是利用余弦函数的周期性和对称性,将一个宽带信号分解成多个窄带信号,并通过滤波器组对各个窄带信号进行处理,从而实现信号的选择和提取。具体来说,CMFB余弦调制滤波器组通过将输入信号与一组余弦函数进行调制,生成一组带移位的信号,再将这些信号通过一组带通滤波器进行滤波,得到一组带通信号,最后通过对这组带通信号进行解调,得到一组输出信号。

 

3.2、CMFB调制过程

滤波器组的频率响应可以用以下数学公式表示:

 

H(e^jω)=∑k=0N-1h(k)e^jωkH(e^{j\omega}) = \sum_{k=0}^{N-1} h(k) e^{j\omega k}H(e^jω)=k=0∑N−1​h(k)e^jωk

 

其中,H(e^jω)表示滤波器组的频率响应,h(k)表示滤波器系数。

 

3.3、CMFB特点

CMFB余弦调制滤波器组具有以下特点:

 

具有频率选择性,可以对不同频率的信号进行分别处理;

具有可调性,可以通过改变滤波器系数来改变滤波器的频率响应;

可以实现高效计算,通过对输入信号进行调制和解调,可以将宽带信号转化为窄带信号进行处理,从而减少计算量;

可以实现多通道处理,通过对多个滤波器进行级联,可以实现多通道信号的处理。

CMFB余弦调制滤波器组可以广泛应用于以下领域:

 

信号处理:可以对信号进行滤波、去噪、压缩等处理;

图像处理:可以对图像进行滤波、增强、压缩等处理;

通信:可以用于调制解调、信道均衡、频偏校正等处理;

其他领域:如雷达、声呐、电子对抗等。

 

 

 

4.部分核心程序

figure;
plot(w1/(2*pi),20*log10(abs(h1)/max(abs(h1))));
xlabel('归一化频率');
ylabel('幅频响应(dB)');
axis([0,0.5,-150,10]);
title('原型滤波器');
% 创建一个新的图窗并绘制每个通道的滤波器组的幅频响应曲线  
figure;
for ij=1:Num_ch% 对于每个通道,执行以下循环  
    for ij2=1:N% 对于每个样本,执行以下循环,样本数量由前面定义的N决定  
        % 为每个通道计算一个特定的滤波器系数并赋值给cmfb1矩阵的相应元素位置  
        cmfb1(ij,ij2) = 2*Pcosm_filter(ij2)*cos((2*(ij-1)+1)*pi/(2*Num_ch)*(ij2-1-(N-1)/2)+(-1)^(ij-1)*pi/4);
    end
    % 将当前通道的所有滤波器系数赋值给Bcoff变量  
    Bcoff   = cmfb1(ij,:);
    % 通过freqz函数获取当前通道的滤波器的频率响应,结果赋值给h2和w2  
    [h2,w2] = freqz(Bcoff,Acoff,512);
 
    % 在新的图窗中绘制当前通道的滤波器幅频响应曲线,并保持当前图窗打开状态以便绘制下一条曲线  
    plot(w2/(2*pi),20*log10(abs(h2)/max(abs(h2))));hold on
    xlabel('归一化频率');
    ylabel('幅频响应(dB)');
    title('滤器组');
    axis([0,0.5,-150,10]);
end% 循环结束,对于所有通道的所有滤波器幅频响应都已绘制在新的图窗中
figure;
stem(Pcosm_filter);
xlabel('样本');
ylabel('冲激响应');
title('滤器响应');

  

标签:滤波器,余弦,响应,matlab,信号,CMFB,调制
From: https://www.cnblogs.com/matlabworld/p/17978720

相关文章

  • 基于MIMO通信系统的球形译码算法matlab性能仿真,对比PSK检测,SDR检测
    1.算法运行效果图预览 2.算法运行软件版本MATLAB2022A 3.算法理论概述      球形译码算法(SD)是一种基于多输入多输出(MIMO)通信系统的检测算法。与相移键控(PSK)和软件定义无线电(SDR)相比,它具有更高的频谱效率和可靠性,下面将详细介绍SD算法。       ......
  • 无涯教程-MATLAB - Octave
    GNUOctave是像MATLAB这样的高级编程语言,它与MATLAB大部分兼容。它也用于数值计算。Octave与MATLAB具有以下共同特征-矩阵是基本数据类型它具有对复数的内置支持它具有内置的数学函数和库它支持用户定义的函数GNUOctave也是可免费重新发行的软件,您可以根据自由软件基金会......
  • Matlab-pcolor绘制二维色温图并修改温度条颜色
    figure(3)pcolor(time,yData',data1.ConVel')shadinginterp;colorbar;color_1=[0,0,1];color_2=[1,1,1];color_3=[1,0,0];num12=45;num23=25;R_mat=[linspace(color_1(1),color_2(1),num12),linspace(color_2(1),color_3(1),num23)];G_mat=[linspace(col......
  • 无涯教程-MATLAB - 变换(Transforms)
    MATLAB提供了用于处理变换的命令,例如Laplace和Fourier变换,转换在科学和工程中用作简化分析并从另一个角度查看数据的工具。例如,傅立叶变换允许我们将表示为时间函数的信号转换为频率函数,拉普拉斯变换使我们能够将微分方程转换为代数方程。MATLAB提供了laplace,傅立叶和fft命......
  • 无涯教程-MATLAB - 多项式(Polynomials)
    MATLAB将多项式表示为行向量,其中包含按降序排序的系数。例如,方程P(x)=x4+7x3-5x+9可以表示为-p=[170-59];判断多项式polyval函数用于以指定值判断多项式。例如,要判断我们先前的多项式p,在x=4处,键入-p=[170-59];polyval(p,4)MATLAB执行上述语句并返......
  • 无涯教程-MATLAB - 代数(Algebra)
    到目前为止,我们已经看到所有示例都可以在MATLAB及其GNU(也称为Octave)中运行,但是对于求解基本的代数方程,MATLAB和Octave几乎没有什么不同,因此我们将尝试在单独的部分中介绍MATLAB和Octave。我们还将讨论代数表达式的分解和简化。MATLAB中代数方程solve函数用于求解代数方程,......
  • 无涯教程-MATLAB - 微积分(Calculus)
    MATLAB提供了多种方法来解决微分和积分问题,求解任意程度的微分方程式以及计算极限,最重要的是,您可以轻松求解复杂函数的图,并通过求解原始函数及其导数来检查图上的最大值,最小值。本章将讨论微积分的问题,在本章中,我们将讨论预演算的概念,即计算函数的极限并验证极限的性质。计算极......
  • 无涯教程-MATLAB - 绘图(Plotting)
    要绘制函数图,您需要执行以下步骤-通过为变量x指定值的范围定义x,为此函数绘制定义函数y=f(x)以plot(x,y)以下示例将演示该概念。让我们用简单的函数y=x绘制x的值范围(从0到100),增量为5。创建一个脚本文件并输入以下代码-x=[0:5:100];y=x;plot(x,y)运行文件时,MAT......
  • 无涯教程-MATLAB - 数据输出
    MATLAB中的数据导出意味着写入文件,MATLAB允许您在另一个读取ASCII文件的应用程序中使用数据,为此,MATLAB提供了几种数据导出选项。有两种方法可以将数字数组导出为定界的ASCII数据文件-使用save函数并指定-ascii限定符使用dlmwrite函数使用保存函数的语法是-savemy_data.......
  • 无涯教程-MATLAB - 字符串(Strings)
    在MATLAB中创建字符串非常简单,实际上,我们已经使用了很多次。例如,您在命令提示符下键入以下内容-my_string='LearnfkPoint'MATLAB将执行上述语句并返回以下输出-my_string=LearnfkPointMATLAB将所有变量视为数组,而字符串则视为字符数组,让我们使用whos命令检查上面创建的变......