返回信息流怎样用matlab得出一段wav文件的 频率--时间 图像?
我的做法是,wavread按照bits读入后,将文件分为若干段,比如每1500bit是一段,然后对这些小段分别做快速傅立叶变换FFT,再从得出的快速傅立叶变换结果中找出频率强度最强的那个算作这一点的频率。按照这种方法依次把所有分段做出来。
但是有问题,我也不太清楚具体在哪。。。
y=0;
[y,Fs,bits]=wavread('SP1.wav');
k=0;
y=y(:,1);
d=1500
l=length(y);
c=round(l/d);
for i=0:c-1
Y = fft(y(i*1500+1),d);
Pyy = Y.* conj(Y) / d;
h=floor(d/2);
f=Fs*(0:h)/d;
k(i+1)=Pyy(1);
for j=2:h+1
if Pyy(j)>k(i+1)
k(i+1)=f(j);
end;
end;
end;
figure;plot(1:c,k);
上面是我的代码
d就是分段bit长度
FFT那段是从网上找的代码,我想知道做完FFT之后Y的值是什么?代码运行的时候发现Pyy的值没有变过
这是一条镜像帖。来源:北邮人论坛 / matlab / #7961同步于 2011/4/2
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Matlab机器人发帖
求教~一个简单的问题。。。
Rddd
2011/4/2镜像同步1 回复
订阅后,新回复会通过你的通知中心匿名送达。
1 条回复