2012-11-13 76 views
8

Chức năng lập trình MATLAB có khóa hình con số được tạo không? Tôi muốn vẽ các đường thẳng đứng trên hình nhưng chức năng của đường dường như không làm gì cả. Làm thế nào tôi có thể vẽ một đường trên một phổ MATLAB?Vẽ các đường thẳng đứng trên sơ đồ phổ 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

Bạn có một số mã tạo ra các quang phổ mà chúng tôi có thể thử nghiệm không? –

+0

Tôi chỉ sử dụng chức năng spectrogram(), tuy nhiên tôi đã thêm mã của tôi vào câu hỏi. Hãy bình luận và bỏ ghi chú các chức năng vẽ đường theo nhu cầu; họ dường như không làm bất cứ điều gì ở đây – user13267

+0

Tôi có thể làm cho mã này hoạt động bằng cách loại bỏ các tùy chọn bổ sung mà bạn chuyển sang 'spectrogram' (lạ) và cũng thay thế dữ liệu thực với nhiễu ngẫu nhiên (thực sự lạ). – Isaac

Trả lời

4

Các spectogram tạo ra một surf và đặt view-(0,90). Các surf bộ các zlim để một số giá trị (phụ thuộc vào dữ liệu spectrogram), và dường như, thêm một dòng vào cốt truyện hiện tại không thay đổi các zlim (có lẽ vì spectrogram khóa các trục bằng cách nào đó; nên có thể tìm thấy trong edit spectrogram). Do đó, trong view(0,90), dòng hoàn toàn biến mất (xoay ô, bạn sẽ thấy dòng xuất hiện ở đâu đó trên bề mặt).

Để giải quyết: cách bạn thêm một dòng mặc định là dòng có z -coordinates của [0 0], đó, đối với nhiều spectrogram s, sẽ trên phạm vi của các trục được thiết lập bởi spectrogram.

Phát hành

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

sau line sau đó nên làm cho dòng xuất hiện.

Ngoài ra: trong trường hợp của tôi, bề mặt mà trên đó dòng đang lơ lửng hầu hết là màu xanh dương, cũng như dòng. Điều này không giúp làm cho nó rõ ràng có một dòng :) Tôi làm cho nó trắng, mà tương phản tốt hơn với màu xanh/vàng/đỏ surf dưới đây.

+0

Cảm ơn rất nhiều !!!!! Tôi không hiểu tất cả các chi tiết về lướt sóng và zlim nhưng mã của bạn làm cho dòng xuất hiện – user13267

+0

Rất lạ. Trước khi đến đây, tôi đã thử sử dụng plot3() tạo một dòng với giá trị z cực cao và nó không hoạt động, nhưng điều này đã làm cho trick.Kudos và +1. – neuronet

Các vấn đề liên quan