在matlab谱图上绘制垂直线

时间:2012-11-13 01:23:21

标签: matlab user-interface

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);

1 个答案:

答案 0 :(得分:4)

spectogram生成surf并将view设置为(0,90)surfzlim设置为某些值(取决于spectrogram数据),显然,在当前图中添加一行不会更改 { {1}}(可能是因为zlim以某种方式锁定了轴;应该可以在spectrogram中找到。因此,在edit spectrogram中,线条完全消失(旋转图形;您将看到线条出现在曲面上方的某处)。

要解决:您添加行的方式默认为具有view(0,90)的行 - z的坐标, 对于许多[0 0] s,它将高于spectrogram设置的轴的范围。

颁发

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

然后应该显示该行。

另外:在我的情况下,线条悬停的表面大多是蓝色,就像线一样。这无助于显示有一条线:)我把它变成白色,与下面的蓝色/黄色/红色line形成鲜明对比。