Surface Plot - using a linear vector for displaying x axis
1 view (last 30 days)
Show older comments
Hi everybody! I am using 'surf' to display a self-made spectrogram of a speech signal. Here's the code:
% plot spectrogram to axes2
nfft=512;
% reverse axes of vector 'data'
s = data';
% check if signal lenght is an equal number
if mod(length(s),2)
n = length(s)-1;
% crop the signal
s = s(1:n);
data = data(1:n);
else
n = length(s);
end;
% window overlap value
numoverlap = nfft*3/4;
% create hann window
win = hann(nfft, 'periodic');
% determine amount of segments
k = fix((n-numoverlap)/(length(win)-numoverlap));
% create the time vector for entire signal
t=0:((n/fs)/(k-1)):(n/fs);
% create frequency vector
%f = fs/2*linspace(0,1,nfft/2+1); ---> original
f = fs/2*linspace(0,1,nfft/2); % my adaptation for better processing
% predefine the matrix to store the segments
segs=zeros(k,nfft);
% segmentation index
m=1;
% segmentation
for i=1:k
% windowing of the segment
w_s = s(m:nfft+m-1).*win';
segs(i,1:nfft)=w_s;
% next segment
m = m+nfft-numoverlap;
end
% predefine the matrix for the spectral values of the segments
segspec=zeros(k,nfft);
% computation of the fft of the individual segments
for y=1:k
segspec(y,1:nfft)=fft(segs(y,1:nfft));
end
segspec=segspec';
spectral = segspec(1:nfft/2+1,1:k);
surf((log10(abs(spectral))+eps),'EdgeColor','none');
colormap(jet);
view(0,90);
axis([-inf k -inf nfft/2]);
xlabel('Analysis Windows');
ylabel('Frequency Bins');
title('Spectrogram','FontWeight','bold','FontSize',11);
On the x axis, I will now get the frequency bins 1:k. Is it possible to use another vector for displaying the numbers along the x axis, just as I can do with the normal plot function?
Example: t1=1:200; plot(t1,graphdata);
I have tried to look for any solutions in the documentation and online, but I've just hit dead ends on this.
I'd appreciate any suggestions.
2 Comments
Honglei Chen
on 1 Feb 2012
You can certainly do surf(x,y,z), and it is documented. Does it work for you?
Answers (0)
See Also
Categories
Find more on Time-Frequency Analysis in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!