matlab - 在matlab频谱图上绘制垂直线

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

最佳答案

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

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

发行

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

之后应该使该行出现。

另外:在我的例子中,线悬停的表面大部分是蓝色的,线也是。这无助于使有一条线变得明显 :) 我把它变成了白色,这与下面的蓝色/黄色/红色 surf 形成了更好的对比。

关于matlab - 在matlab频谱图上绘制垂直线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13354330/

相关文章:

C2371 : 'mxArray' : redefinition; different basic types

postgresql - Postgres 序列对代码和 pgAdmin 的 react 不同

c# - 多线程可访问 "shared"列表框

c++ - 在Qt中创建一个依赖于父窗口但出现在父窗口之外的新窗口

QT : Using State Machine for UI interactions?

java - 简单的乘法程序 GUI 出错了。 java

string - 用于保存的matlab迭代文件名

mysql - 按一列分组并计算 matlab 中各组的中位数

matlab - 如何从 gui 运行基础工作区中的 matlab 文件

javascript - AngularJS 中的 Spotify 网络播放器风格 UI