Tôi cần một số trợ giúp để hiểu đầu ra của tính toán DFT / FFT.
Tôi là một kỹ sư phần mềm có kinh nghiệm và cần giải thích một số kết quả đo gia tốc trên điện thoại thông minh, chẳng hạn như tìm tần số chính. Thật không may, tôi đã ngủ qua hầu hết các lớp EE đại học của mình cách đây mười lăm năm, nhưng tôi đã đọc trên DFT và FFT trong vài ngày qua (dường như có ít).
Vui lòng không có câu trả lời "tham gia lớp học EE". Tôi thực sự định làm điều đó nếu chủ nhân của tôi trả tiền cho tôi. :)
Vì vậy, đây là vấn đề của tôi:
Tôi đã bắt được tín hiệu ở tần số 32 Hz. Đây là mẫu 1 giây gồm 32 điểm, mà tôi đã vẽ biểu đồ trong Excel.
Sau đó, tôi nhận được một số mã FFT được viết bằng Java từ Đại học Columbia (sau khi làm theo các đề xuất trong một bài đăng về " FFT đáng tin cậy và nhanh chóng trong Java ").
Kết quả của chương trình này như sau. Tôi tin rằng nó đang chạy FFT tại chỗ, vì vậy nó sử dụng lại cùng một bộ đệm cho cả đầu vào và đầu ra.
Before:
Re: [0.887 1.645 2.005 1.069 1.069 0.69 1.046 1.847 0.808 0.617 0.792 1.384 1.782 0.925 0.751 0.858 0.915 1.006 0.985 0.97 1.075 1.183 1.408 1.575 1.556 1.282 1.06 1.061 1.283 1.701 1.101 0.702 ]
Im: [0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ]
After:
Re: [37.054 1.774 -1.075 1.451 -0.653 -0.253 -1.686 -3.602 0.226 0.374 -0.194 -0.312 -1.432 0.429 0.709 -0.085 0.0090 -0.085 0.709 0.429 -1.432 -0.312 -0.194 0.374 0.226 -3.602 -1.686 -0.253 -0.653 1.451 -1.075 1.774 ]
Im: [0.0 1.474 -0.238 -2.026 -0.22 -0.24 -5.009 -1.398 0.416 -1.251 -0.708 -0.713 0.851 1.882 0.379 0.021 0.0 -0.021 -0.379 -1.882 -0.851 0.713 0.708 1.251 -0.416 1.398 5.009 0.24 0.22 2.026 0.238 -1.474 ]
Vì vậy, tại thời điểm này, tôi không thể tạo đầu hoặc đuôi của đầu ra. Tôi hiểu các khái niệm DFT, chẳng hạn như phần thực là biên độ của sóng cosin thành phần và phần ảo là biên độ của sóng sin thành phần. Tôi cũng có thể theo dõi sơ đồ này từ cuốn sách tuyệt vời " Hướng dẫn của nhà khoa học và kỹ sư về xử lý tín hiệu kỹ thuật số ":
Vì vậy, các câu hỏi cụ thể của tôi là:
Từ đầu ra của FFT, làm cách nào để tìm "tần số xuất hiện nhiều nhất"? Đây là một phần trong phân tích dữ liệu gia tốc kế của tôi. Tôi nên đọc mảng thực (cosine) hay ảo (sin)?
Tôi có đầu vào 32 điểm trong miền thời gian. Đầu ra của FFT không phải là một mảng 16 phần tử cho số thực và một mảng 16 phần tử cho ảo? Tại sao chương trình cung cấp cho tôi kết quả mảng thực và mảng ảo đều có kích thước 32?
Liên quan đến câu hỏi trước, làm cách nào để phân tích cú pháp các chỉ mục trong mảng đầu ra? Với đầu vào của tôi là 32 mẫu được lấy mẫu ở 32 Hz, tôi hiểu rằng đầu ra của mảng 16 phần tử phải có chỉ số của nó trải đều lên đến 1/2 tốc độ lấy mẫu (32 Hz), vì vậy tôi hiểu rằng mỗi phần tử của mảng biểu diễn (32 Hz * 1/2) / 16 = 1 Hz?
Tại sao đầu ra FFT có giá trị âm? Tôi nghĩ các giá trị đại diện cho biên độ của một hình sin. Ví dụ, đầu ra của Real [3] = -1.075 có nghĩa là biên độ -1.075 đối với sóng cosine tần số 3. Có đúng không? Làm thế nào một biên độ có thể là âm?