理想滤波

本文详细介绍了如何使用MATLAB处理wav文件,包括数据采集、播放、时域波形图绘制、频域波形图绘制以及理想低通滤波器的应用。通过实际操作步骤,深入理解声音文件的处理流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

%******************数据采集和播放********************%
[y,fs,bit] = wavread('ld.wav');         %打开声音文件
%y为数据保存矩阵,fs为声音数据频率,bit采样位数
sound_track_1 = y(:,1);                 %采集声音,1声道
sig_len = length(sound_track_1);        %获取采样长度
sound(y,fs,bit);                        %播放声音

%*******************绘制时域波形图*******************%
time = (0:sig_len-1) / fs;              %声音持续时间
figure ;
plot(time,sound_track_1);
title('oscillograph of file');
grid on;
xlabel('Time/s');
ylabel('amplitude');

%*******************绘制频域波形图*******************%
yfft = fft(sound_track_1,sig_len);      �t
half_sig_len = floor(sig_len / 2);          
half_yfft = yfft(1:half_sig_len+1);         %只保留前一半低频信号
half_yfft_abs = abs(half_yfft);             %计算低频信号的幅值
f_low = ((0:half_sig_len)+1) * fs / sig_len;%频域图横坐标
figure ;
plot(f_low,half_yfft_abs);
title('Frequency spectrum');
grid on;
xlabel('Frequency/Hz');
ylabel('Amplitude');
%*******************理想低通滤波器*******************%
fl = 2000;                                  %截止频率2000HZ
low_filter = [ones(1,floor(sig_len * fl / fs)),...
    zeros(1,sig_len - 2 * floor(sig_len * fl / fs)),...
    ones(1,floor(sig_len * fl / fs))];
y_w = low_filter .* yfft';
y_out = ifft(y_w);
wavwrite(y_out,fs,'ld_out.wav');

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值