8

matlabスペクトログラム関数はとにかく作成された図をロックしますか?図に縦線を描きたいのですが、線機能が何もしていないようです。matlabスペクトログラムに線を引くにはどうすればよいですか?

clc; clear all; close all;
[data, fs, nbits] = wavread(<INSERT WAVE FILE HERE>);
% [data, fs, nbits] = wavread('white_0.05_6sec_aud.wav');


N_data=length(data); N_frame=128; N_half=N_frame/2; N_loop=N_data/(N_half);
output=zeros(N_data,1);
hz=0:(fs/2)/N_half:(fs/2)-(fs/2)/N_half;

spectrogram(data, hanning(N_frame), N_half, N_frame, fs);

x = [6500 6500];
y = [0 5.5];

H = gca;

% set(gca, 'NextPlot', 'add');
% line(x, y);

h = line([6500, 6500], [0, 5.5]);
set(h, 'parent', handles.predicted_ax);

% view(-90,90)
% set(gca,'ydir','reverse')
% 
% [y, x] = ginput(1)


% view(-90, 180);
4

1 に答える 1

4

spectogramを生成し、surfをに設定view(0,90)ます。をいくつかの値(データに応じて)にsurf設定し、明らかに、現在のプロットに線を追加しても変更されません(おそらく、軸が何らかの方法でロックされているため、で見つけることができるはずです)。したがって、では、線が完全に消えます(プロットを回転します。線が表面の上のどこかに表示されます)。zlimspectrogramzlimspectrogramedit spectrogramview(0,90)

解決するには:線を追加する方法は、デフォルトでz-座標がの線になります[0 0]。これは、多くspectrogramの場合、で設定された軸の範囲を超えますspectrogram

発行

zl = zlim;
axis([xlim ylim zl(1) max(0, zl(2))])
view(0,90)

その後line、行を表示する必要があります。

また、私の場合、線が浮かんでいる表面は、線と同様にほとんど青でした。これは、線があることを明らかにするのに役立ちません:)私はそれを白にしました。これは、下の青/黄/赤とよりよく対照的ですsurf

于 2012-11-13T06:20:06.753 に答える