中科之旅------matlab生成wav文件和解析wav文件

生成wav:

% 生成时间序列
fs = 5000;      % [Hz] 信号采样频率
T = 1;          % [s] 信号长度 
x = 0:1/fs:T;   % [s] 时间序列
 
% 生成信号序列
f = 440;        % [Hz] 信号频率
y = 1*sin(2*pi*f*x)+sin(2*pi*4*f*x);
 
% 输出音频文件
fname = 'Asin3.wav';        % 设定文件名称 注意格式
audiowrite(fname,y,fs);     % 输出文件

解析wav

[X,FS]=audioread('Asin3.WAV'); % 将 WAV 文件转换成变量

%利用 FDATool 设计一个 LowpassButterworth 滤波器

%指标 FS=22050Hz Fp=1000Hz Ap=1dB Fs=3000Hz As=20dB

B =[0.0062,0.0187,0.0187,0.0062]; % 分子系数

A =[1,-2.1706,1.6517,-0.4312]; % 分母系数

Y=filter(B,A,X); % 实现数字滤波

t=(0:length(X)-1)/FS; % 计算数据时刻

subplot(2,2,1);plot(t,X); % 绘制原波形图

扫描二维码关注公众号,回复: 4849069 查看本文章

title(' 原信号波形图 '); % 加标题

subplot(2,2,3);plot(t,Y); % 绘制滤波波形图

title(' 滤波后波形图 '); % 加标题

xf=fft(X); % 作傅里叶变换求原频谱

yf=fft(Y); % 作傅里叶变换求滤波后频谱

fm=3000*length(xf)/FS; % 确定绘频谱图的上限频率

f=(0:fm)*FS/length(xf); % 确定绘频谱图的频率刻度

subplot(2,2,2);plot(f,abs(xf(1:length(f)))); % 绘制原波形频谱图

title(' 原信号频谱图 '); % 加标题

subplot(2,2,4);plot(f,abs(yf(1:length(f)))); % 绘制滤波后频谱图

title(' 滤波后信号频谱图 '); % 加标题

结果

生成双通道wav

% 生成时间序列
fs = 5000;      % [Hz] 信号采样频率
T = 10;          % [s] 信号长度 
x = 0:1/fs:T;   % [s] 时间序列
 
% 生成信号序列
f = 20;        % [Hz] 信号频率
y = 1*sin(2*pi*f*x)+sin(2*pi*10*f*x);
 
% 输出音频文件
fname = 'sin20_200.wav';        % 设定文件名称 注意格式
audiowrite(fname,[y(:),y(:)],fs);     % 输出文件

猜你喜欢

转载自blog.csdn.net/u013308744/article/details/82734234
今日推荐