- Initialize b as empty and insert b = [b;a]
- Initialize b equal to size of x and index it i.e. b(i,:) = a
- if you donot want to follow above two steps, reshape b at the end of code with the dimension you instructor is telling you i.e. 128x120
Help with Surf() Plot
1 visualizzazione (ultimi 30 giorni)
Mostra commenti meno recenti
Hi, thanks for reading. I have a university lab and I'm stuck on using a surface plot to display some data.
I have to read an audio file and apply a windowing process to it. The code (up to the relevent part) is below:
x = enframe(rm,window);
b = 0;
for i = 1:size(x,1)
a = fftshift(fft(x(i,:)));
a = abs(a);
a = ifft(a);
a = real(a);
b = [b,a];
end
b(1) = [];
rm is from the audio file and window is from the hamming() function. The for loop just runs through each element and stores it in a new array (then I get rid of the first element, which is just 0).
My problem is that my instructions tell me to 'Plot the 3D magnitude-time-frequency spectrum using the surf() command'. What I get at the end of this is 'b', which is 1x15360, the original rm is 15360x1, x is 120x128 (just 'rm' broken into windows of 128 length). I also have a time variable, 't', of 1x15360. I can't see how I could make these work together for a surface plot? If I have two axes of 15360, would I not then need Z to be 15360x15360 to make a surface plot? I feel like I have all the information I need but I've got no clue how to present it.
Any help would be much appreciated.
7 Commenti
Risposte (0)
Vedere anche
Categorie
Scopri di più su Surface and Mesh Plots in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!