首页  >  文章  >  电脑教程  >  matlab音频处理:生成WAV格式频谱图和时域波形图的程序

matlab音频处理:生成WAV格式频谱图和时域波形图的程序

王林
王林转载
2024-01-22 19:12:061385浏览

matlab音频处理:生成WAV格式频谱图和时域波形图的程序

matlab音频处理:生成WAV格式频谱图和时域波形图的程序

%你好,该程序读mywav.wav文件,然后显示频谱以及波形。注意,mywav.wav文件不要太长,否则运算会很慢。

[y,Fs,bits]=wavread('mywav.wav');%读出信号,采样率和采样位数。

y=y(:,1);%我这里假设你的声音是双声道,我只取单声道作分析,如果你想分析另外一个声道,请改成y=y(:,2)

sigLength=length(y);

Y = fft(y,sigLength);

Pyy = Y.* conj(Y) / sigLength;

halflength=floor(sigLength/2);

f=Fs*(0:halflength)/sigLength;

figure;plot(f,Pyy(1:halflength+1));xlabel('Frequency(Hz)');

t=(0:sigLength-1)/Fs;

figure;plot(t,y);xlabel('Time(s)');

基于matlab的连续信号的频谱分析

给个例题,自己变一下就好

fs=1000;%设定采样频率

N=1024;%设定数据长度

i=0:N-1;

t=i/fs;

f=100;%设定正弦信号频率

%生成正弦信号

x=sin(2*pi*f*t);

subplot(231);

plot(t,x);%作正弦信号的时域波形

axis([0,0.01,-1,1]);

xlabel('t');

ylabel('y');

title('正弦信号时域波形');

grid;

%进行FFT变换并做频谱图

y=fft(x,N);%进行fft变换

mag=abs(y);%幅值

f=(0:N-1)*fs/N;%横坐标频率的表达式为f=(0:M-1)*Fs/M;

subplot(232);

plot(f,mag);%做频谱图

axis([0,100,0,80]);

xlabel('频率(Hz)');

ylabel('幅值');

title('正弦信号幅频谱图');

grid;

%均方根谱

sq=abs(y);

figure(1);

subplot(233);

plot(f,sq);

xlabel('频率(Hz)');

ylabel('均方根谱');

title('正弦信号均方根谱');

grid;

%功率谱

power=sq.^2;

figure(1);

subplot(234);

plot(f,power);

xlabel('频率(Hz)');

ylabel('功率谱');

title('正弦信号功率谱');

grid;

%对数谱

ln=log(sq);

figure(1);

subplot(235);

plot(f,ln);

xlabel('频率(Hz)');

ylabel('对数谱');

title('正弦信号对数谱');

grid;

%用IFFT恢复原始信号

xifft=ifft(y);

magx=real(xifft);

ti=[0:length(xifft)-1]/fs;

subplot(236);

plot(ti,magx);

xlabel('t');

ylabel('y');

title('通过IFFT转换的正弦信号波形');

grid;

以上是matlab音频处理:生成WAV格式频谱图和时域波形图的程序的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文转载于:docexcel.net。如有侵权,请联系admin@php.cn删除