2014-04-06 17 views
6

Tôi có tệp âm thanh đại diện cho âm thanh của môtơ. Tôi đã đọc rằng 'bình thường' fft không cung cấp một phân tích có giá trị về máy, và rằng tôi nên sử dụng phân tích đơn hàng để để mô tả 'hành vi' của máy. Tôi ghi lại âm thanh của nó trong khi tăng tốc độ của nó, và tôi đặt các hồ sơ với nhau và tính toán quang phổ của nó. Dưới đây là mã cho rằng:Cách triển khai phân tích thứ tự trong MATLAB

%% read the Audio file and plot its 
clear, clc , clf; 
M = 512; 
k =1 
data= 0 ; 
    for i =100:5:180 
    fileName =['A10_uSp0_Mic100k_2nd_V_',int2str(i),'.wav'] 
    [x(:,k),Fs] = audioread(fileName); 
    k = k+1 ; 
end 
for i = 1:length(x(1,:)) 
    data = [data(:);x(:,i)]; 
end 
k = length(x(1,:)); 
    while k ~= 2 
    data = [data(:);x(:,k)]; 
    k = k -1; 
    end 
spectrogram(data,hamming(M),M/2,0:20:4000,Fs,'yaxis'); 

và kết quả trông giống như:

Spectogram

Như bạn có thể có thể thấy, tôi tăng lên tốc độ của máy bằng 5 cho mỗi timepoint. Câu hỏi của tôi là làm thế nào để tính toán phân tích thứ tự cho hệ thống này !? Cảm ơn bạn rất nhiều vì đã giúp đỡ!

+0

Để thực hiện phân tích đơn hàng, bạn thường cần biết tốc độ quay của máy. Bạn có máy đo tốc độ hoặc cảm biến một vòng trên động cơ mà bạn có thể ghi cùng lúc với tín hiệu rung không? – Max

+0

Không, tôi không có nó, tôi chỉ được phép nghe máy – Engine

+0

Bạn có kiểm soát được tốc độ trong quá trình đo hay không, bạn có phải chỉ lấy những gì bạn nhận được không? Làm thế nào ổn định là tốc độ – Max

Trả lời

2

Đây là một câu hỏi khoa học hơn là câu hỏi về lập trình. Phân tích đơn hàng có thể được thực hiện bằng cách sử dụng biến đổi fourier. Tất cả những gì bạn cần làm là tìm kiếm các đường chéo ở đầu ra, tức là tần số của tiếng ồn tỷ lệ thuận với tốc độ quay.

Trong ví dụ của bạn, có một thứ tự từ 2000 Hz tại thời điểm (tốc độ) 0 đến 4000 Hz tại thời điểm (tốc độ) 150. Sau đó dường như phản xạ xuống, có lẽ là một tạo phẩm không lấy mẫu đủ.

Vậy trật tự là gì? Đối với điều này, bạn cần phải biết tốc độ quay của động cơ mà bạn dường như không biết. Ngoài ra còn có một lệnh yếu hơn bắt đầu tại 3000 Hz tại thời điểm (tốc độ) 0. Với hai hoặc nhiều đơn hàng có thể nhìn thấy, bạn có thể suy ra tốc độ quay của động cơ (bằng cách yêu cầu tần số là bội số nguyên của tốc độ ban đầu) .

Dù sao, mã có thể không cần phải thay đổi ngoại trừ độ phân giải tần số cao hơn.

+0

cảm ơn đầu tiên cho câu trả lời của bạn, nhưng những gì bạn có nghĩa là với deducing tốc độ quay của động cơ, làm thế nào bạn sẽ làm điều đó trong ví dụ câu hỏi? – Engine

+0

Ý tưởng là tần số tiếng ồn tỷ lệ thuận với tốc độ quay của động cơ. Đối với một đường chéo đơn bạn không biết: có thể là hai lần, có thể là năm lần tốc độ quay của động cơ. Nhưng đó là một số nguyên nguyên. Tuy nhiên đối với hai hoặc nhiều đường chéo bạn nhận được một số phương trình mà bạn có thể giải quyết các số nguyên giả định cho các yếu tố tỷ lệ. – Trilarion

+1

@Engine Tôi đã quan tâm đến vấn đề của bạn và đó là lý do tại sao tôi đặt một tiền thưởng. Bây giờ, như được chỉ ra bởi một số, câu hỏi là nhiều hơn về xử lý tín hiệu hơn là viết mã, xem xét việc đăng nó lên trang web dsp, hoặc trang web vật lý với thẻ 'acoustics'. –

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