Liên hợp phức tạp và IFFT


8

Tôi đã hỏi một câu hỏi về chồng tràn .

Tôi đang có một vấn đề nhỏ. Theo đề xuất của Paul RI, tôi đang phản chiếu thùng dưới của tôi vào thùng trên.n / 2n/2n/2

Tôi có một vài câu hỏi.

  • Tôi giả sử là ? Vì vậy, đối với một đơn hàng 10 IFFT tôi sẽ phản chiếu các thùng tần số 512 dưới cùng vào top 512? Điều này cũng sẽ tạo ra cho tôi 1024 mẫu thực sự cuối cùng?2 f f t O r d e rn2fftÔirder
  • Khi phản chiếu, điều này có nghĩa là bin 0 sẽ chuyển sang bin , bin 1 đến bin , v.v.n - 2n-1n-2
  • Tôi dường như nhận được một số hình thức phản ánh ở một phần tư tần số lấy mẫu của tôi? Điều này có nghĩa là nửa trên của dải tần số của tôi thực sự xuất hiện ở nửa dưới. Có ai có ý tưởng tại sao không?
  • Có ai có ý tưởng tại sao tôi nhận được một hiệu ứng phân dải trong đó tôi nhận được 512 mẫu có độ lớn và 512 mẫu tiếp theo không? ("Có thể" này là nơi phản chiếu của tôi đến từ đâu)

Tôi nghĩ rằng đó là bây giờ. Bất kỳ trợ giúp sẽ rất hữu ích !!

Chỉnh sửa: Cung cấp cho bạn một hình ảnh của sự phản chiếu sẽ gần như không thể vì nó rất khó nhìn! Về cơ bản tôi đang lấy mẫu ở tần số 22 kHz và không nhận được gì ngoài "nhiễu" trên 11 kHz. Những gì "nên" (mặc dù rõ ràng là tôi đang làm gì đó sai) ở trên 11 kHz dường như bị phản xạ xuống từ 11 kHz xuống 0. Nó rất kỳ quặc.

Đối với hình ảnh của các sọc họ có thể được nhìn thấy ở đây

Mỗi sọc, tôi tin rằng, là 512 mẫu rộng.


Tôi không rõ chính xác ý của bạn là gì: 1) một số hình thức phản chiếu ở fs / 4 và 2) hiệu ứng phân dải ... Có lẽ bạn có thể cung cấp một hình vẽ cho thấy biểu đồ phổ / fft của bạn chỉ ra ý của bạn là gì ? Tôi có thể giả định như bạn muốn nói, nhưng điều đó sẽ không hữu ích lắm.
Lorem Ipsum

Tôi với yoda vì không hiểu mô tả của bạn, nhưng phản chiếu bin 0 đến n-1 chắc chắn nghe không chính xác. Bin 0 đại diện cho DC và không nên được nhân đôi ở bất cứ đâu. Nếu n chẵn thì Bin n / 2 cũng cần xử lý đặc biệt. Ngoài ra, tôi sẽ khuyên bạn không nên gọi IFFT 1024 điểm là IFFT 10 đơn hàng vì thuật ngữ này có nhiều khả năng gây nhầm lẫn hơn là giúp đỡ.
Dilip Sarwate

@yoda: Đã cập nhật.
Goz

@Dilip Sarwate: Lời xin lỗi, rất khó để mô tả và thậm chí khó nhìn hơn.
Goz

@Goz các trục là gì?
Lorem Ipsum

Câu trả lời:


4

Tôi không chắc chắn những gì bạn đang nhận được với "phản xạ" hoặc "phân dải", nhưng bạn muốn sao chép các điểm dữ liệu của mình sao cho tín hiệu miền tần số (đầu vào vào IFFT) đối xứng nhau. Điều đó có nghĩa là, đối với thậm chí:N

X[k]= =X*[N-k],k= =1,2,Giáo dục,N2-1

Lưu ý rằng là không dựa trên; phần tử đầu tiên trong vectơ là X [ 0 ] . Ở trên chỉ ra rằng bạn không nhân đôi zeroth và NkX[0] phần tử thứ 2 trong vector đầu vào. Mối quan hệ này dựa trên tính chu kỳ củabiến đổi Fourier rời rạc; nửa đầu của vectơ miền tần số tương ứng với tần số "dương" bao trùm dải tần số góc từ0đến(N-1)πN20 . Nửa thứ hai bao gồm từπđến(N-1)2π(N-1)πNπ , trong đó, lợi dụngchu kỳ2πtrong miền tần số, tương đương với-πđến-2π(N-1)2πN2π-π . Để vectơ miền tần số có đối xứng liên hợp, thì có thể dễ dàng thấy rằng mối quan hệ trên phải đúng.-2πN

Nói đến mục tiêu ban đầu của bạn là chuyển đổi một quang phổ thành tín hiệu âm thanh nghe có vẻ có ý nghĩa, không có gì đảm bảo rằng những gì bạn nhận được sẽ theo bất kỳ cách nào làm hài lòng. Như đã chỉ ra trên Stack Overflow, quang phổ không có thông tin pha; phương pháp được đề xuất ở đó giả sử pha của mỗi thùng miền tần số bằng 0 (vì vậy thao tác liên hợp được hiển thị ở trên là không cần thiết). Mặc dù tai người không nhạy cảm khủng khiếp với sự biến dạng pha trong âm thanh, bạn có thể phải làm một việc khác tùy thuộc vào chính xác những gì bạn hy vọng đạt được.


3

Chỉ số [0] của bạn là thành phần DC và không được nhân đôi. Điểm phản chiếu phải là (N / 2) +1


1

Giả sử bạn có một chuỗi thực 1024 điểm. Một FFT phức tạp biến nó thành 1024 số phức. Tuy nhiên X [0] (DC) và X [512] Nyuist là có thật và X [1] .. X [511] là đối xứng liên hợp nên toàn bộ phổ vẫn có thể được biểu diễn với 1024 số (2 số thực và 511 phức). Giả sử bạn có phổ nửa mặt X [0] ... x [512] và muốn tạo phiên bản đối xứng liên hợp của nó Y [0] ... Y [1023]. Làm như sau

Y[0] = X[0], Y[1] = X[1] .... Y[512] = X[512];
Y[513] = conjugate(X[511]), Y[514] = conjugate(X[510]) ... Y[1023] = conjugate(X[1])

Nếu bạn sử dụng Matlab, bạn cần thêm "1" vào tất cả các chỉ số vì Matlab bắt đầu đếm ở 1 (không phải 0).


0

Sự phản xạ là bình thường: Nó được gọi là răng cưa hoặc gấp tần số và nó xảy ra khi tín hiệu bạn lấy mẫu vượt quá tần số gọi là tần số Nyquist, một nửa tần số lấy mẫu của bạn. Lý tưởng nhất là bạn muốn tần số lấy mẫu ít nhất gấp đôi tần số của tín hiệu bạn đang lấy mẫu, vì lý do chính xác này.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.