Thể hiện tác dụng của răng cưa


7

Tín hiệu trông như thế nào khi chúng ta không sử dụng tốc độ Nyquist để loại bỏ răng cưa khỏi tín hiệu trong khi lấy mẫu?

Giả sử tín hiệu có dạng hình sin, với tần số 500 Hz và biên độ 2.

signal = 2*cos(2*pi*500*t)

Nếu tôi lấy mẫu, (thay thế t = nTs, Ts = thời gian lấy mẫu và n đại diện cho số lượng mẫu) và vẽ các tín hiệu được lấy mẫu bằng một khoảng thời gian lấy mẫu khác bằng cách sử dụng lệnh subplot trong MATLAB, làm cách nào tôi có thể xác định được răng cưa trong tín hiệu được lấy mẫu?

Dưới đây là mã ví dụ đã vẽ hai tín hiệu, một tín hiệu ở tốc độ Nyquist trong khi mã kia ít hơn tốc độ Nyquist:

A = 2;
Fmax = 10;
Fs = 2*Fmax;
n = 0:1/Fs:1;
Cont = A*sin(2*pi*(Fmax/Fs)*n);
Cont1 = A*sin(2*pi*(Fmax/18)*n);
subplot(2,1,1)
stem(n,Cont)
hold on
stem(n,Cont1)

và đây là dạng sóng:

Nhập mô tả hình ảnh ở đây

Tôi không thể xác định răng cưa. Nó ảnh hưởng đến tín hiệu như thế nào khi tỷ lệ Nyquist không sử dụng?


Do một lỗi, trên thực tế, ví dụ của bạn không lấy mẫu ở mức dưới một nửa tần số tín hiệu kiểm tra của bạn. Hãy thử lấy mẫu tín hiệu 1 MHz ở 1 Hz.
hotpaw2

Câu trả lời:


8

Bạn không thể xác định răng cưa với một hình sin đơn giản ở một tần số cụ thể và theo một cách nào đó là toàn bộ vấn đề về việc cố gắng tránh nó. Bạn không thể biết nếu hình sin bạn đang "nhìn" làQ Hz hoặc 2FS-QHz.

Một thành phần hình sin đơn răng cưa trông giống như một hình sin không có răng cưa. Nếu bạn muốn trải nghiệm răng cưa, bạn phải thử nó với dạng sóng phức tạp hơn hoặc hình sin đang thay đổi theo thời gian.

Một cách để "trải nghiệm răng cưa" là nhấn mạnh một tiếng hót theo cách sau:

Fs = 8000;t=0:(1./Fs):(5-1./Fs);p=2.*pi.*t; %Sampling Frequency, Time Vector, Phase Vector
y1 = chirp(t,0,5,Fs/2.0); %Create a chirp that goes from DC to Fs/2.0
spectrogram(y1); %Have a look at it through spectrogram, please pay attention at the axis labels. This is basically going to be a "line" increasing with time.
soundsc(y1,Fs); %Listen to it...It clearly "goes up" in frequency
y2 = chirp(t,0,5,Fs); %Now create a chirp that goes from DC to Fs
spectrogram(y2); %Have a look at it through spectrogram
soundsc(y2,Fs); %Listen to it...Do you "get" the folding of the spectrum?

Nói chung, bạn có thể nghĩ Lấy mẫu là Điều chế vì đây là điều đang diễn ra hiệu quả ở phần tử mẫu và giữ của bộ chuyển đổi ADC.

Điều này sẽ giúp bạn hiểu dễ dàng hơn khái niệm như undersampling ví dụ (và các ứng dụng mà nó là hoàn toàn OK để mẫu ở thấp hơn so với tỷ lệ Nyquist). Nhưng ngoài ra, bạn có thể tải tệp WAV trong MATLAB (với 'wavread') có chứa một số tín hiệu phức tạp hơn và trước khi nghe nó với 'soundsc', chỉ cần nhân nó với sóng "vuông" * (bạn có thể muốn tìm kiếm chức năng tra cứu 'vuông') ở một số tần số thấp hơn tệp WAVFS. Điều này sẽ giới thiệu một cách hiệu quả đặc tính chính (không mong muốn) của răng cưa là sự gấp khúc này . Kết quả không mấy dễ chịu nên bạn có thể muốn giảm âm lượng loa.

Tôi hi vọng cái này giúp được.

* EDIT: Rõ ràng, "hình vuông" trả về một hình vuông có biên độ trong khoảng [-1,1] vì vậy trước khi nhân nó với tín hiệu của bạn, tốt hơn là nên bán lại nó thành:

aSquareWave = (square(100.*p)+1.0)/2.0 % Where p is the phase vector and here we are producing a square wave at 100Hz (given an Fs of 8kHz as above). aSquareWave's amplitude is now in the interval [0,1]

6

Bạn có ý tưởng đúng, nhưng một sai lầm chính là làm hỏng kết quả của bạn.

n=0:1/Fs:1;

Bằng cách tăng thời gian 1 / F, bạn hoàn toàn làm cho đơn vị thời gian là giây. Nói cách khác, "0" là 0 giây và "1" là 1 giây.

Cont = A*sin(2*pi*(Fmax/Fs)*n);

Bằng cách bình thường hóa tần số hình sin bằng Fs, bạn hoàn toàn cho rằng đơn vị mẫu là 1 / Fs giây. Đó là lý do tại sao bạn nhận được rất nhiều mẫu cho một chu kỳ hình sin khi bạn dự định chỉ có hai mẫu trên mỗi chu kỳ (tỷ lệ Nyquist). Nhân tiện, một trong hai đơn vị mẫu là tốt (1 giây hoặc 1 / F giây), bạn chỉ cần nhất quán.

Đây là nỗ lực của tôi về những gì tôi nghĩ bạn dự định.

A = 2;
Fmax = 10;
Fs = 2*Fmax;
n=0:1/Fs:1;
Cont = A*cos(2*pi*Fmax*n);
Cont1 = A*cos(2*pi*Fmax*(20/18)*n);
subplot(2,1,1)
stem(n,Cont)
subplot(2,1,2)
stem(n,Cont1)

Tôi đã thay đổi "sin" thành "cos" bởi vì nó đã đạt được tất cả các điểm 0 hình sin thay vì các đỉnh. nhập mô tả hình ảnh ở đây


0

Tôi nghĩ bạn cần tăng tần suất kích thước hoặc sử dụng các bước lớn hơn nhiều trong việc lấy mẫu.

Các răng cưa không xuất hiện nếu bạn có một chức năng rất trơn tru. Ví dụ, một hàm hằng không mang lại bí danh cho bất kỳ việc lấy mẫu nào bạn sử dụng.

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.