Need help with 3D-plot
5 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Patrik Soukup
el 26 de Abr. de 2018
Comentada: Thsnisorn Auk
el 28 de Mayo de 2023
Hi there,
I would like to ask how exactly can I plot 3D plot such as this

from my 2D plot, which represents X-Y axes.

I´m using this code
load m2.txt;
i=m2(:,2);
ia=i*1000;
fs=50000;
T=1/fs;
L=length(ia);
t=(0:L-1)*T;
nfft=2^nextpow2(L);
w=hann(L);
io=ia.*w;
I=fft(io,nfft)/L;
Ia=abs(I);
f=fs/2*linspace(0,1,nfft/2+1);
%Normal.
Iref=max(Ia);
Inorm=20*log10(Ia/Iref);
figure;
plot(f,(Inorm(1:nfft/2+1)));
set(gca, 'YLim',[-130,0]);
set(gca, 'XLim',[0,500]);
xlabel('f (Hz)','FontSize',9);
ylabel('Magnituda (dB)','FontSize',9);
hold on;
So I obviously need to add the Z-axis, which represents length of the signal (time). I need to find out for how long ceratin frequencies were present during the measurement.
Tried to use "surf" and "plot3" commands, but all my attempts failed, so I would be really, really thankful for any insight.
Regards,
Patrik
2 comentarios
Ameer Hamza
el 26 de Abr. de 2018
"but all my attempts failed"
What have you tried so far? What errors did you get?
Patrik Soukup
el 26 de Abr. de 2018
Editada: Patrik Soukup
el 26 de Abr. de 2018
Respuesta aceptada
Star Strider
el 26 de Abr. de 2018
The image in your Question is a Signal Processing Toolbox spectrogram (link) plot, although with a different view. The spectrogram function produces a surf plot with a default view(0,90) so you are looking down at it as a 2D plot rather than viewing it as a 3D plot. You can use the GUI to rotate it, or simply experiment with different arguments to the view function after you plot it. The documentation for the spectrogram function describes how to do all of this, so I will not discuss it in detail here.
10 comentarios
Star Strider
el 9 de Mayo de 2018
The only option I can think of is to use the rotate (link) function. That will rotate the surface object.
Más respuestas (1)
Ameer Hamza
el 26 de Abr. de 2018
The figure you posted can be made using plot3. Try Running this script. You will get the idea how to use plot3 to draw such graphs.
f = figure;
t = 0:0.01:10;
plot3(0, 0, 0);
ax = gca;
delete(ax.Children);
hold on;
for i=1:5
plot3(ax, t, 2*i*ones(size(t)), sin(i*t)+rand(size(t)));
end
4 comentarios
Thsnisorn Auk
el 28 de Mayo de 2023
I really have same problem. Could you help me to plot it but in my case i was to plot x= frequency, y =time, z = amplitude .
Thank you.
Regards.
Sorn
Ver también
Categorías
Más información sobre Spectral Measurements en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!