3. 绘制振幅频谱图

3. 绘制振幅频谱图
[plain] view plaincopy
%Y = fft(X) 使用快速傅里叶变换算法返回向量X的离散型傅里叶变换  
%Y = fft(X,n) 返回n点的离散傅里叶变换,如果向量X的长度小于n,函数要将向量X补零到长度n;如果向量X的长度大于n, 则函数阶段X使之长度为n。若X是矩阵,按相同方法对X进行处理。  
  
Y = fft(ft,sigLength);   
halfLength = floor(sigLength/2);  
Pyy =Y(1:halfLength + 1); % 只选取前半截部分  


波形的傅里叶变换返回震级和相位信息,并且用复数的形式表达,通过计算绝对值来获取其频率的振幅
[plain] view plaincopy
Pyy = abs(Pyy);%用于计算复向量的Y的振幅  
f = ((0:halfLength)+1)* Fs/sigLength;   
subplot(2,1,2);  
plot(f,Pyy), title('Frequency spectrum'),grid;  
xlabel('Frequency(Hz)');  
ylabel('Amplitude');  


>> Y = fft(left,leftSigLength);
>> halfLength = floor(leftSigLength/2);
>> Pyy =Y(1:halfLength + 1);
>> Pyy = abs(Pyy);%用于计算复向量的Y的振幅  
>> f = ((0:halfLength)+1)* Fs/leftSigLength;
>> plot(f,Pyy), title('Frequency spectrum'),grid; 
>> xlabel('Frequency(Hz)');  
ylabel('Amplitude');  
>> Yabs=abs(Y);
>> figure;plot(Yabs)
>> f(1)


ans =


   0.413060582218725


>> Fs


Fs =


       44100


>> Fs/leftSigLength


ans =


   0.413060582218725


>> f(end)


ans =


    2.205041306058222e+004


>> f(end)-Fs/leftSigLength


ans =


       22050


>> 

你可能感兴趣的:(matlab,多媒体)