Matlab对wav文件做fft分析

1.代码

% 指定要读取的.wav文件路径
filename = 'jay.wav';

% 使用audioread函数读取.wav文件
[sound_data, sample_rate] = audioread(filename);
sound_data =  sound_data(:, 1);
% 计算音频数据的长度
sound_length = length(sound_data);

% 计算FFT的点数
% fft_points = 2^nextpow2(sound_length);
fft_points = sound_length;

% 执行FFT变换
sound_fft = fft(sound_data, fft_points); % 结果是复数

%%%%%%%%%%%%%%画fft实部的%%%%%%%%%%%%%
subplot(3, 1, 1);
x1 = sample_rate*(0:(fft_points-1))/fft_points;
y1 = sound_fft;
plot(x1, y1);                             % 默认忽略虚部,有两个边带,且幅度有正有负
xlabel('Frequency (Hz)');
ylabel('Magnitude');
title('FFT Spectrum');

%%%%%%%%%%%%%%画fft的幅度值%%%%%%%%%%%%%
subplot(3, 1, 2);
x2 = sample_rate*(0:(fft_points-1))/fft_points;
y2 = abs(sound_fft);
plot(x2, y2);                             % 有两个边带,且幅度有正有负
xlabel('Frequency (Hz)');
ylabel('Magnitude');
title('FFT Spectrum');

%%%%%%%%%%%%%%画fft的幅度值, 只要半个边带%%%%%%%%%%%%%
subplot(3, 1, 3);
x3 = sample_rate*(0:(fft_points/2))/fft_points;
y3 = abs(sound_fft(1:fft_points/2+1));
plot(x3, y3);                             % 有两个边带,且幅度有正有负
xlabel('Frequency (Hz)');
ylabel('Magnitude');
title('FFT Spectrum');
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

朱小勇本勇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值