Увеличение частоты сигнала - PullRequest
1 голос
/ 07 апреля 2011

Привет всем

Я вернулся и использовал resample (из панели инструментов обработки сигналов) и repmat, но я заметил, что для некоторых значений строки не совпадают с частотой дискретизации, см. Изображение ссылка ниже. обратите внимание, что верхнее значение изображения для строк говорит о 1000, а нижнее изображение говорит о строках = 1008. Это происходит, когда я изменяю значения resample и repmat (freq_new), но только для определенных значений. Как я могу исправить это правильно? Я мог бы просто удалить все после 1000, но я не уверен, является ли это ошибкой или просто работает метод resample / repmat. PS: используя matlab / октаву

http://dl.dropbox.com/u/6576402/questions/rows_different.png

Вот тестовый код, который я использовал, чтобы проверить это

%resample_repmat signal
clear all, clf
Fs = 1000; % Sampling rate
Ts = 1/Fs; %sampling interval
t=0:Ts:1-Ts; %sampling period

freq_orig=1;
y=sin(2*pi*t*freq_orig)'; %gives a short wave

freq_new=9;
y2=resample(y,1,freq_new); %resample matrix
y3=repmat (y2,freq_new,1); %replicate matrix

[r_orig,c_orig] = size(y) %get orig number of rows and cols
[r_new,c_new] = size(y3) %get new number of rows and cols

subplot(2,1,1),plot(y),title('Orginal signal')
title(['rows=',num2str(r_orig),' cols=',num2str(c_orig)])
subplot(2,1,2),plot(y3),title('New signal')
title(['rows=',num2str(r_new),' cols=',num2str(c_new)])

1 Ответ

3 голосов
/ 07 апреля 2011

Поскольку ваш исходный сигнал имеет длину 1000 сэмплов, повторная дискретизация с периодом, в 9 раз меньшим, даст вам 111,11111 ... сэмплов за один цикл. Матлаб округляет это число до 112. Подумайте об этом. Если бы ваши циклы имели длину 111 сэмплов, ваша полная волна была бы длиной 999 сэмплов. Поскольку длина составляет 112 сэмплов, при объединении девяти из них получается сигнал длиной 1008 сэмплов. Невозможно сделать это 1000, потому что вы имеете дело с дискретными временами. Код правильный, он делает то, что должен. Физически не существует способа вписать точно 9 одинаковых циклов чего-либо в 1000 дискретных выборок. Надеюсь, это поможет.

В качестве альтернативы, вы можете сначала повторить начальную волну девять раз, а , а затем пересэмплировать ее. Ваши циклы не будут идентичны, но они будут хорошо вписываться в 1000 образцов.

Надеюсь, это поможет =)

...