今天在matlab上画了一下钢琴最高音la的频谱,结果如下图,我想问一下为什么这个频谱是一个对称的呢?并且我们知道这个音的频率是4185.5Hz,那在这个图上怎么看出来呢?
这个转换具体怎么做呢?我用fft的时候已经加了shift了也需要转化吗?
追答把你的程序贴出来,帮你看看
追问[y,fs,bits]=wavread('C:\\Users\\pro\\Desktop\\tsy\\10.wav'); %读取音频信息
Y1=fft(y,4096); %进行傅立叶变换
Y2=fftshift(Y1)
plot(abs(Y2)); %('声音信号的频谱');
p=sprintf('fs 值为:%d.\',fs);
title(p);
abs(Y1)是用来求振幅的。要求振幅和频率的关系还要再做一步,全部代码如下:
[y,fs,bits]=wavread('C:\\Users\\pro\\Desktop\\tsy\\10.wav'); %读取音频信息
N=2^12;
Fs=2^10;
Y = fft(y,N); %做FFT变换
Ayy = (abs(Y)); %取模
plot(Ayy(1:N)); %显示原始的FFT模值结果
title('FFT 模值');
figure;
Ayy=Ayy/(N/2); %换算成实际的幅度
Ayy(1)=Ayy(1)/2;
F=([1:N]-1)*Fs/N; %换算成实际的频率值
plot(F(1:N/2),Ayy(1:N/2)); %显示换算后的FFT模值结果
xlabel('频率');
ylabel('振幅');
title('振幅-频率曲线图');
非常感谢,我才刚开始学matlab,有很多问题都还不太懂“我这还有一个问题,你方便的话明天我能私信问一下你吗?