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