2013-01-15 57 views
5

Tôi đang làm việc trên một dự án có liên quan đến những thay đổi về tần suất/tần suất theo thời gian với tệp sóng (tôi mới sử dụng MATLAB, nhưng không lập trình) . Tôi có thể thấy biểu đồ biên độ thời gian và biên độ tần số (sau một FFT), nhưng làm thế nào tôi có thể cô lập tần số và hiển thị nó tại mỗi thời điểm?MATLAB - Vẽ đồ thị tần số thời gian của tệp .wav

Code:

filename = '/Users/Username/Sample_1.wav' 

[y, fs] = wavread(filename); 
y = y(:,1); 
dt = 1/fs; 
t = 0:dt:(length(y)*dt)-dt; 
plot(t,y); xlabel('Seconds'); ylabel('Amplitude'); 

transformed = fft(y); 
mag = abs(transformed); 
plot(mag); 
+2

Bạn nói "làm thế nào tôi có thể cách ly tần suất và hiển thị tần suất tại mỗi thời điểm?" Có một số câu trả lời tốt cho điều này, như xa như nó đi, nhưng điều quan trọng là nhận ra rằng không có những điều như tần số tức thời theo ý nghĩa mà bạn muốn. Nói cách khác, không có giá trị tần số duy nhất tương ứng với từng thời điểm (hoặc, ít nhất, bạn không thể lấy được thông tin đó từ dữ liệu miền thời gian. Nếu bạn có thể, bạn sẽ vi phạm nguyên tắc bất định Heisenberg) . –

Trả lời

7

Nếu bạn có Processing Toolbox tín hiệu, sau đó bạn có thể tìm thấy những spectrogram chức năng hữu ích.

Nếu không, bạn có thể đạt được hiệu ứng tương tự bằng cách tính toán FFT của các phân đoạn cửa sổ liên tiếp (có thể chồng chéo) của dữ liệu miền thời gian của bạn và sau đó vẽ biên độ.

Đây thực chất là short-time Fourier transform (STFT).

+0

Để thêm vào .. những gì bạn (OP) đang cố gắng giảm trong phạm vi Phân tích thời gian-tần số. Nếu bạn quan tâm, có rất nhiều bài viết được viết về cách sử dụng các kỹ thuật như Short Term Fourier Transform (chức năng MATLAB 'spectrogram' sử dụng) vv Đó là một chủ đề thú vị! – notthetup

+0

Cảm ơn sự giúp đỡ của bạn! Tôi đã thực sự tìm kiếm một cái gì đó nhiều hơn dọc theo dòng của một biểu đồ đường, nhưng tôi nghĩ rằng có thể học cách đọc spectograms. – airplaneman19

+0

@ airplaneman19: Vui vì tôi có thể giúp. Nhưng hãy lưu ý nhận xét của Bjorn ở trên. –

0

Nếu bạn có Hộp công cụ xử lý tín hiệu, quang phổ là cách để đi (như Oli Charlesworth đã đề cập).

Nếu bạn không có nó, trao đổi tập tin trung tâm MATLAB luôn luôn là một nơi tốt để tìm kiếm một cái gì đó chung chung.

http://www.mathworks.com/matlabcentral/fileexchange/1553-spectrogram-short-time-ft-log-magnitude

Đây dường như là một việc thực hiện hợp lý và cũng làm việc của các chức năng phổ.

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