Matlab演示低通滤波器

这篇具有很好参考价值的文章主要介绍了Matlab演示低通滤波器。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

首先输入两个音频文件(可以自己录两段音频)

[x1,fs] =audioread('voice1.wma');
[x2,fs] =audioread('voice2.wma');

fs是采样频率。

matlab低通滤波器代码,信号处理,矩阵,Powered by 金山文档

我们可以用n接收x1。再用n除以采样频率fs,即可得到x1消耗的秒数。

由于两个信号长度不同,所以接下来我们需要统一两个信号的长度

len1 = length(x1);
len2 = length(x2);
if len1>len2
    x2(len2+1:len1) = 0;
else
    x1(len1+1:len2) = 0;
end
    
derta_fs = fs/length(x1);

将较短的那个信号的空白部分用0填充。

信号等长之后直接将两个信号通入低通滤波器做成带限信号,得到信号x1_low和x2_low。

然后用audiowrite文件保存。

fp = 3000;
N1 = 2*pi*0.9/(0.1*pi);
wc1 = 2*pi*fp/fs;%将整个频率进行归一化
if rem(N1,2)
    N1 = N1+1;
end
Window = blackman(N1+1);
b1 = fir1(N1,wc1/pi,Window);%低通滤波器b1只有19个数,精度不高
figure(1);
freqz(b1,1,512);
title('低通滤波器的频率响应');
x1_low =filter(b1,1,x1);%将x1低通滤波
x2_low =filter(b1,1,x2);%将x2低通滤波

audiowrite('voice1AfterLowpassFilter.wav',x1_low,fs);
audiowrite('voice2AfterLowpassFilter.wav',x2_low,fs);

注:fp=3000hz的意思是将3000hz以内的部分保留下来。

调制:用到的公式是

y(t)=x1(t)cos(wc1t)+x2(t)cos(wc2t)

fs是每秒采集的点数

而1/fs是每个点持续的秒数

所以t=i-1/fs。

x3=zeros(1,len1);
fc1 = 8000;
fc2 = 27000;%以上两句分别定义了wc1和wc2.
for i =1:length(x3)
    x3(i)=x1_low(i)*cos(2*pi*fc1*(i-1)/fs)+x2_low(i)*cos(2*pi*fc2*(i-1)/fs);
end
audiowrite('voice1and2AfterModulation.wav',x3,fs);

最后解调

x1_afterModulation = zeros(1,len1);
x2_afterModulation = zeros(1,len1);
for i = 1:length(x3)
    x1_afterModulation(i) = x3(i)*cos(2*pi*fc1*(i-1)/fs);
    x2_afterModulation(i) = x3(i)*cos(2*pi*fc2*(i-1)/fs);
end
x1_afterModulation = filter(b1,1,x1_afterModulation);
x2_afterModulation = filter(b1,1,x2_afterModulation);
audiowrite('voice1AfterDemodulation.wav',x1_afterModulation,fs);
audiowrite('voice2AfterDemodulation.wav',x2_afterModulation,fs);

完整代码

[x1,fs] =audioread('voice1.wma');
[x2,fs] =audioread('voice2.wma');

%只取左声道
x1 = x1(:,1);
x2 = x2(:,1);

%统一两个信号的长度。
len1 = length(x1);
len2 = length(x2);
if len1>len2
    x2(len2+1:len1) = 0;
else
    x1(len1+1:len2) = 0;
end
    
derta_fs = fs/length(x1);

%低通滤波器(FIR)
fp = 3000;
N1 = 2*pi*0.9/(0.1*pi);
wc1 = 2*pi*fp/fs;
if rem(N1,2)
    N1 = N1+1;
end
Window = blackman(N1+1);
b1 = fir1(N1,wc1/pi,Window);%低通滤波器b1只有19个数,精度不高
figure(1);
freqz(b1,1,512);
title('低通滤波器的频率响应');
x1_low =filter(b1,1,x1);%将x1低通滤波
x2_low =filter(b1,1,x2);%将x2低通滤波

audiowrite('voice1AfterLowpassFilter.wav',x1_low,fs);
audiowrite('voice2AfterLowpassFilter.wav',x2_low,fs);

%调制
x3=zeros(1,len1);
fc1 = 8000;
fc2 = 27000;%以上两句分别定义了wc1和wc2.
for i =1:length(x3)
    x3(i)=x1_low(i)*cos(2*pi*fc1*(i-1)/fs)+x2_low(i)*cos(2*pi*fc2*(i-1)/fs);
end
audiowrite('voice1and2AfterModulation.wav',x3,fs);


%解调

x1_afterModulation = zeros(1,len1);
x2_afterModulation = zeros(1,len1);
for i = 1:length(x3)
    x1_afterModulation(i) = x3(i)*cos(2*pi*fc1*(i-1)/fs);
    x2_afterModulation(i) = x3(i)*cos(2*pi*fc2*(i-1)/fs);
end
x1_afterModulation = filter(b1,1,x1_afterModulation);
x2_afterModulation = filter(b1,1,x2_afterModulation);
audiowrite('voice1AfterDemodulation.wav',x1_afterModulation,fs);
audiowrite('voice2AfterDemodulation.wav',x2_afterModulation,fs);

运行结果

matlab低通滤波器代码,信号处理,矩阵,Powered by 金山文档

结果由于无法上传音频,只能给大伙看看图片。

波形明显一高一低

matlab低通滤波器代码,信号处理,矩阵,Powered by 金山文档

再看看解调之后的文章来源地址https://www.toymoban.com/news/detail-642240.html

matlab低通滤波器代码,信号处理,矩阵,Powered by 金山文档

到了这里,关于Matlab演示低通滤波器的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【阵列信号处理】空间匹配滤波器、锥形/非锥形最佳波束成形器、样本矩阵反演 (SMI) 研究(Matlab代码实现)

    💥💥💞💞 欢迎来到本博客 ❤️❤️💥💥 🏆博主优势: 🌞🌞🌞 博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️ 座右铭: 行百里者,半于九十。 📋📋📋 本文目录如下: 🎁🎁🎁 目录 💥1 概述 📚2 运行结果 🎉3 参考文献 🌈4 Matlab代码实现 空间匹配

    2024年02月14日
    浏览(46)
  • Matlab图像处理- 高斯低通滤波器

      高斯低通滤波器 高斯低通滤波器是一种 更平滑的一种滤波器 ,高斯低通滤波器完全没有振铃现象,且边缘平滑。 示例代码 利用输入图像,构建一个截止频率为30的高斯低通滤波器的透视图如下图所示。 效果图片

    2024年02月09日
    浏览(45)
  • 信号处理之FIR数字滤波器(Matlab仿真)

            数字滤波器的作用是滤除不感兴趣的信号,留下想要的信号。数字滤波器可分为无限脉冲响应(IIR)数字滤波器、有限脉冲响应(FIR)数字滤波器两种,两者各有优缺点,其中FIR数字滤波器因其具有良好的线性相位特性受到广泛应用,线性相位是指信号中各频率成分的相对

    2024年02月03日
    浏览(52)
  • Matlab的Filter Designer工具设计二阶低通滤波器

    Matlab版本:2018b 本文要求:设计一个二阶巴特沃斯低通滤波器用于嵌入式软件滤波,传感器采样频率是20KHz,截止频率是333Hz,获取滤波系数,本文不包括二阶滤波推导和代码编写。 打开Matlab-APP-Filter Designer  设置二阶巴特沃斯低通滤波器,采样频率是20000,截止频率333。 点击

    2024年02月13日
    浏览(38)
  • 【Matlab】如何使用Filter Design设计低通、高通、带阻滤波器

    如何使用Filter Design设计低通、高通、带阻数字滤波器。 文章目录 前言 一、低通滤波器 二、高通滤波器 三、带阻滤波器 使用Matlab自带的Filter Design APP可以方便、快捷地设计各种FIR/IIR数字滤波器,并且能输出数字滤波器的阶数、幅度响应、相位响应等。 使用一个由10Hz,20H

    2024年02月11日
    浏览(39)
  • 数字信号处理-10-并行FIR滤波器MATLAB与FPGA实现

    本文介绍了设计滤波器的FPGA实现步骤,并结合杜勇老师的书籍中的并行FIR滤波器部分进行一步步实现硬件设计,对书中的架构做了复现以及解读,并进行了仿真验证。 FIR滤波器的结构形式时,介绍了直接型、级联型、频率取样型和快速卷积型4种。在FPGA实现时,最常用的是最

    2023年04月09日
    浏览(49)
  • Matlab图像处理频域滤波实现——巴特沃斯低通、高通、带通带阻滤波器

    巴特沃斯滤波器是一种常用于图像处理的滤波器,它在频域中的传递函数具有更加平滑的过渡,相对于理想滤波器来说,巴特沃斯滤波器可以更好地控制截止频率和滤波器的阶数。下面是巴特沃斯滤波器的不同类型的原理简介: 1.原理 (1)巴特沃斯低通滤波(Butterworth Lowp

    2024年04月09日
    浏览(55)
  • 数字信号处理音频FIR去噪滤波器(基于MATLAB GUI的开发)

    利用MATLAB GUI设计平台,用窗函数法设计FIR数字滤波器,对所给出的含有噪声的声音信号进行数字滤波处理,得到降噪的声音信号,进行时域频域分析,同时分析不同窗函数的效果。将文件解压至一个目录下,运行m文件即可使用。 读取.wav音频文件函数 :audioread();(老版

    2024年02月08日
    浏览(56)
  • 数字信号处理翻转课堂笔记17——窗函数法设计FIR滤波器及matlab实现

    对应教材:《数字信号处理(第五版)》西安电子科技大学出版社,丁玉美、高西全著 (1)窗函数法设计FIR线性相位滤波器的原理; (2)加窗效应:加窗对滤波器特性的影响(难点); (3)典型窗函数及其主要特性和参数(重点); (4)窗函数法设计FIR滤波器的步骤(

    2024年01月16日
    浏览(53)
  • 基于FPGA的FIR低通滤波器实现(附工程源码),matlab+vivado19.2+simulation

    本文为FPGA实现FIR滤波器仿真过程,附源代码。 提示:以下是本篇文章正文内容,下面案例可供参考 打开MATLAB在命令行窗口输入: fadtool 回车后在滤波器设计界面设置滤波器参数如下 之后点击如图标志,设置定点,在菜单栏\\\"目标(R)\\\"出选择生成对应滤波器系数.COE文件 mat

    2024年02月11日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包