2013-07-11 4 views
0

Я хочу 3d spectrogram. Это то, что я сделал до сих пор.Smooth surf plot of spectrogram в Matlab

urlwrite('http://goo.gl/D1uAn','sample.wav'); 
%reads from web and saves the wav file in local folder with name sample.wav 
%this might not save the file if so please download the file from the link 

[W,fs]=wavread('sample'); 
%[W,fs]=wavread(FileName); 

[~,~,T,P]=spectrogram(W(:,end),200,200/2,256,fs); 
%[~,~,T,P]=spectrogram(W(:,end),tres,tres/2,fres,fs); 
I=flipud(-log(P)); 
% I is the image of spectrogram in 2D matrix now 

% I want to plot this spectrogram in 3d 
h = surf(I.*-1); 
set(h, 'edgecolor','none'); 

%this does the job however it is very blocky I want to smooth this 

ответ

1

Если увеличить перекрытие, оно будет более плавным:

[~,~,T,P]=spectrogram(W(:,end),200,199,256,fs); 

Но также займет больше времени, чтобы вычислить. Это компромисс.

+0

Я пробовал делать это медленным и все еще блочным. Мне нужна общая форма. поэтому я думал уменьшить разрешение и интерполировать, но я не могу найти способ сделать это. –

+0

Ну, вы можете использовать сглаживающий фильтр, например, gaussian, используя 'imfilter' и' fspecial'? Или интерполировать с помощью 'interp2'? Вы искали в файлах справки для интерполяции, потому что там много информации. –

+0

Спасибо, сделаю это сейчас .. –