2016-03-10 1 views
0

А именно, спектрограмма и еще один сюжет.Как отображать 3D и 2D графики друг на друга?

N = 1000000; 
win = 3125;         
no = floor(win/2);       
nfft = floor(log2(N)); 
fs = 31250;       
data = pm_data.ch4(1:N); 
Fr = 20:10:5000; 
t = 1/fs:1/fs:N/fs; 
spectrogram(data,hann(win),no,Fr,fs,'yaxis'); 
colorbar; 
set(gca,'Yscale','log') 
plot(t,ai_data.ch1(1:N)) 

Я пытался ставить «держаться» перед спектрограммы, но он не работает: \

+1

Возможно использовать [ 'plot3'] (http://www.mathworks.com/help/matlab/ref/plot3.html), где одна из осей является константой. Трудно сказать без кода, который не требует инструментов. – excaza

+1

Пожалуйста, инициализируйте все переменные при публикации примеров кода. Если содержание не имеет значения, используйте 'rand' или аналогичный. – Daniel

ответ

2

Для двух участков, которые будут объединены, они должны иметь те же оси. Таким образом, 2D-кривая, которую вы планировали бы с plot, должна быть помещена в 3D-пространство на plot3, как предполагалось. Вот простой пример: парабола на параболоиде. Я использую нули для y-координаты в plot3 и толстую линию с контрастным цветом, чтобы отложить ее от поверхности.

x = -1:0.1:1; 
[X,Y] = meshgrid(x, x); 
surf(X, Y, X.^2-Y.^2) 
hold on 
plot3(x, zeros(size(x)), x.^2, 'k', 'linewidth', 5) 
hold off 

paraboloid

+0

отлично! спасибо :) Есть ли способ сделать то же самое и иметь разные топоры для каждого? Вот так: http://www.mathworks.com/help/matlab/ref/plotyy.html – Raksha

Смежные вопросы